使用SharedPreferences将图像从库加载到ImageView

时间:2017-12-19 17:18:09

标签: android image sharedpreferences android-preferences android-gallery

我希望你能帮助我。这是我第一次在这里写一个问题。

我想从图库中选择一个图像并将其显示在ImageView中。关闭该活动并重新打开后,我想显示我们之前选择的图像。选择图片 - >在ImageView中显示图像 - >保存图像选择 - >关闭活动 - >打开活动 - >显示图像选择。 希望我很清楚。

从图库中选择图像并将其加载到ImageView中的第一部分正在工作,给我带来问题的是目前我正在尝试在SharedPreferences / Preferences中保存所选图像或其路径但是在打开时没有显示再次活动。使用SharedPreferences / Preferences保存和加载似乎可以正常工作,但它不会显示图片。

我尝试过:Path,EncodedPath等,但似乎没什么用。 我做错了什么?

打开画廊:

    Intent gallery = new Intent(Intent.ACTION_GET_CONTENT);
    gallery.setType("image/*");
    startActivityForResult(gallery, RESULT_LOAD_IMAGE);

保存图片:

   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK){
        Uri imageUri = data.getData();
        imageView.setImageURI(imageUri);

        SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("imageURI", imageUri.getEncodedPath());
        editor.commit();
    }
}

用于加载所选图像:

        SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
    String imageUriString = settings.getString("imageURI", "");
    Uri imageUri = Uri.parse(imageUriString);

    Picasso.with(this)
            .load(imageUriString)
            //.load(testarrraylogo.get(position))
            .placeholder(R.drawable.otto)
            .error(R.drawable.hochbahn)
            // To fit image into imageView
            .fit()
            // To prevent fade animation
            .noFade()
            .into(imageView);

2 个答案:

答案 0 :(得分:0)

SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("imageURI", imageUri.getEncodedPath());
editor.commit();

进入

SharedPreferences.Editor editor = getSharedPreferences("preference", 
MODE_PRIVATE).edit();
editor.putString("imageURI", "uriPathstring");  //Your URI PATH STRING
editor.apply();

并像这样检索

SharedPreferences prefs = getSharedPreferences("preference, MODE_PRIVATE); 
String imageUri = prefs.getString("imageURI", null);

在Picasso中加载图片

Picasso.with(context).load(new File(imageuri)).into(imageView);

答案 1 :(得分:0)

第一次检索图片时,您没有使用毕加索加载图片,可以将此imageView.setImageURI(imageUri);替换为此Picasso.with(YourActivity.this).load(imageData).into(imageView)

然后,为了将Uri保存到SharedPreferences,您可以执行类似editor.putString("imageURI", imageUri.toString);的操作,然后使用

检索它
try {
   imageUri = URI.create(myPrefs.getString("imageURI", "defaultString"));
} catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}