gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:23 25 4
gpt4 key购买 nike

我有一个 Activity 可以打开另一个 Activity 来获取相机图库图片。图片返回到我原来的 Activity 并在 imageView 中休息。那工作正常。我如何保存图像,以便当用户稍后回来或杀死应用程序时,图像仍然存在。我知道我应该使用共享首选项来获取图像路径而不是保存图像本身,但我只是不知道该怎么做。

Activity 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);
}});

Activity 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,请在此处检查 Activity 图的生命周期:http://developer.android.com/reference/android/app/Activity.html )像这样:

@Override
protected 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 进入后台时,图像路径将保存在 SharedPreferences 中,名称为 AppSharedPref - 这个名称可以是随心所欲,但在检索数据时需要使用相同的。

然后在相同的 Activity 中重写 onResume() 方法,这样当 Activity 进入前台时,您可以检索图像路径:

@Override
protected void onResume() {
SharedPreferences sp = getSharedPreferences("AppSharedPref", 0);
selectedImagePath = settings.getString("ImagePath", "");
super.onResume();
}

您可能还想尝试覆盖其他方法,例如 onStart() 根据图表,但我留给您。

关于android - 如何使用共享首选项保存图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17357646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com