所以在我的应用程序中我需要保存并在图像视图上显示图像,所以我使用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,它不会显示任何内容。 我怎么能解决它?
答案 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。否则,在解码后显示已保存的图像,就像当前正在进行的那样。