删除共享首选项也会删除默认图像视图

时间:2018-11-26 11:23:27

标签: android

我有一个活动,用户可以上传照片。首先,在他选择照片之前,可绘制文件夹中有一个默认图像。但是,由于我在该视图上具有共享的首选项,因此,如果用户返回到先前的活动,则可以在主活动的onDestroy中清除共享的首选项,然后再次启动应用程序时,将图像视图为空白,而不显示默认图像。 这是我保存共享首选项的方式:

ActivityTwo.java;

public void onBackPressed() {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("imageUri", imageURI);
    editor.apply();
    super.onBackPressed();
} 

在主要活动中,我清除此首选项:

@Override
public void onDestroy()
{
    super.onDestroy();
    SharedPreferences preferences = getSharedPreferences("Mypref", 0);
    preferences.edit().remove("imageUri").commit();
}

但是,当我再次启动该应用程序时,ActivityTwo的图像视图只是一个空白方块,内部没有默认图像。

那么,我做对了吗?我清除共享首选项的方式?为什么我必须通过主要活动的onDestroy而不是ActivityTwo来完成?(它没有用)。以及如何保存默认图像视图?

这是图像视图的xml:

<ImageView
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="40dp"
android:background="@drawable/image_view_border"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/no_profile_picture" />

2 个答案:

答案 0 :(得分:0)

在首先设置默认图像的活动中,检查自定义图像的首选项是否存在,如果是,请替换图像,否则请使用默认图像。

例如:

finalUri = imageUri == null? defaultUri : imageUri;
imageView.setImageURI(finalUri);

编辑:要获取可绘制的参考,可以使用以下代码:

Drawable myImage = getResources().getDrawable(R.drawable.myImage);

答案 1 :(得分:0)

检查imageuri是否为空,然后设置图片...

if(imageURI!=null)
imageView.setImageURI(imageURI)
else imageView.setImageResource(R.drawable.no_profile_picture);