我有一个活动,打开另一个活动,以获得相机画廊图片.图片返回到我原来的活动并在imageVIEw中休息.这工作正常.如何保存图像,以便用户稍后返回或杀死应用程序时图像仍然存在.我知道我应该使用共享首选项来获取图像路径而不是保存图像本身,但我只是不知道如何做到这一点.
活动A.
private ImageVIEw im1;private String selectedImagePath;private static final int SELECT_PICTURE = 1;public voID onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESulT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); System.out.println("Image Path : " + selectedImagePath); im1.setimageURI(selectedImageUri); }}}public String getPath(Uri uri) { String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedquery(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.movetoFirst(); return cursor.getString(column_index); }; ((button)dialogVIEw.findVIEwByID(R.ID.button3)) .setonClickListener(new OnClickListener() {public voID onClick(VIEw arg0) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); }});
活动B.
button send = (button) findVIEwByID(R.ID.send); send.setonClickListener(new OnClickListener() { public voID onClick(VIEw v) { Intent intent=new Intent(); setResult(RESulT_OK, intent); Bundle bundle=new Bundle(); bundle.putInt("image",R.ID.showimg); intent.putExtras(bundle); finish(); public voID onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESulT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); System.out.println("Image Path : " + selectedImagePath); img.setimageURI(selectedImageUri); }}}public String getPath(Uri uri) { String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedquery(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.movetoFirst(); return cursor.getString(column_index); }
解决方法:
使用图像覆盖Activity中的onPause()方法(以了解为什么onPause,检查活动图的生命周期:http://developer.android.com/reference/android/app/Activity.html),如下所示:
@OverrIDeprotected voID onPause() { SharedPrefrences sp = getSharedPreferences("AppSharedPref", 0); // Open SharedPreferences with name AppSharedPref Editor editor = sp.edit(); editor.putString("ImagePath", selectedImagePath); // Store selectedImagePath with key "ImagePath". This key will be then used to retrIEve data. editor.commit(); super.onPause();}
这意味着每当此Activity进入后台时,图像路径将保存在名称为AppSharedPref的SharedPreferences中 – 此名称可以是您喜欢的任何名称,但在检索数据时需要使用相同的名称.
然后在同一个Activity中覆盖onResume()方法,以便在Activity到达前台时检索图像路径:
@OverrIDeprotected voID onResume() { SharedPreferences sp = getSharedPreferences("AppSharedPref", 0); selectedImagePath = settings.getString("ImagePath", ""); super.onResume();}
您可能还想使用覆盖其他方法,例如根据图表的onStart(),但我留给您.
总结以上是内存溢出为你收集整理的android – 如何使用共享首选项保存图像路径全部内容,希望文章能够帮你解决android – 如何使用共享首选项保存图像路径所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)