我有一个活动,用户可以上传照片。首先,在他选择照片之前,可绘制文件夹中有一个默认图像。但是,由于我在该视图上具有共享的首选项,因此,如果用户返回到先前的活动,则可以在主活动的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" />
答案 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);