поэтому в моем приложении мне нужно сохранить и отобразить изображение в представлении изображения, поэтому я использую SharedPreferences для его сохранения, проблема в том, что если нет сохраненного значения, я хочу отображать изображение из чертежей , и для этого я использую этот код:

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 и ничего не показывает. Как бы это исправить?

Ответы (2)

Нет необходимости использовать значение по умолчанию вашего метода getString () в качестве прямого пути к вашему объекту для рисования. Вы можете просто сделать следующее:

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

Когда вы получаете строку из общих предпочтений по умолчанию, если значение не сохраняется, установите значение по умолчанию, возвращаемое для чего-то, например.«не найдено»

Теперь перед настройкой выполните setImageBitmap проверьте, является ли значение в вашей строковой переменной photo "not found". Если он отображается на вашем ресурсе. В противном случае отобразите сохраненное изображение после его декодирования, как вы это делаете сейчас.

2022 WebDevInsider