android– 如何使用共享首选项保存图像路径

android– 如何使用共享首选项保存图像路径,第1张

概述我有一个活动,打开另一个活动,以获得相机画廊图片.图片返回到我原来的活动并在imageView中休息.这工作正常.如何保存图像,以便用户稍后返回或杀死应用程序时图像仍然存在.我知道我应该使用共享首选项来获取图像路径而不是保存图像本身,但我只是不知道如何做到这一点.活动A.priva

我有一个活动,打开另一个活动,以获得相机画廊图片.图片返回到我原来的活动并在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 – 如何使用共享首选项保存图像路径所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存