如果值不存在,Android SharedPreferences将获得drawable

时间:2016-01-01 21:21:15

标签: android imageview sharedpreferences android-drawable

所以在我的应用程序中我需要保存并在图像视图上显示图像,所以我使用SharedPreferences来保存它,问题是,如果没有保存的值,我想显示来自drawables的图像,为此我使用这段代码:

final ImageButton imgView = (ImageButton) findViewById(R.id.UserImageButton);
String photo = PreferenceManager.getDefaultSharedPreferences(UserActivity.this).getString("Image", String.valueOf(getResources().getDrawable(R.drawable.user, getApplicationContext().getTheme())));//NameOfTheString, StringIfNothingFound
        imgView.setImageBitmap(BitmapFactory.decodeFile(photo));

但是如果没有保存图像,则在ImageView上不使用drawable,它不会显示任何内容。 我怎么能解决它?

2 个答案:

答案 0 :(得分:1)

没有要求使用getString()方法的默认值作为drawable的直接路径。您可以简单地执行以下操作:

private static final String IMAGE_PREF = "image_pref_key";
private static final String PREF_FAIL_CODE= "no_image_found";

String photo = PreferenceManager.getDefaultSharedPreferences(UserActivity.this).getString(IMAGE_PREF, PREF_FAIL_CODE);

if (photo.equals(PREF_FAIL_CODE) {
    imageView.setImageDrawable(getResources().getDrawable(R.drawable.user));
} 

答案 1 :(得分:0)

当您从默认共享首选项获取字符串时,如果未存储该值,请将返回的默认值设置为例如"not found"

现在,在设置setImageBitmap之前,请检查字符串变量photo中的值是否为"not found"。如果它显示您的资源的drawable。否则,在解码后显示已保存的图像,就像当前正在进行的那样。