我正在创建一个应用程序,用户可以在其中更改多个ImageButtons的源图像,我将这些保存在SharedPreferences中。以下是获取和保存图像的方法:
public int getImage(String item){
SharedPreferences pref = getActivity().getPreferences(Context.MODE_PRIVATE);
int id = pref.getInt(item, R.drawable.no_item);
return id;
}
public void saveImage(String item, int resourceId){
SharedPreferences starterSP = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor edit = starterSP.edit();
edit.putInt(item, resourceId);
edit.apply();
}
这些图像存储为Drawable ID,存储为整数。
但是,当我将新图像文件添加到我的drawable文件夹并重新启动应用程序时,我所有现有的ImageButton源都会更改为Drawable文件夹中的其他图像。我怎样才能防止这种情况发生?
答案 0 :(得分:1)
您应该保存drawable
名称而不是ID,因为每次应用编译时,drawable
ID都会更改。
您可以使用 -
按可绘制名称获取可绘制资源IDfinal int rsId = getResources().getIdentifier(imageNameFromPreferences, "drawable",
context.getPackageName());
答案 1 :(得分:0)
保存可绘制的名称而不是id,因为当将新的drawable添加到项目并使用名称来检索id时,drawable的名称不会更改。
public Int getImage(String item) {
SharedPreferences pref = getActivity().getPreferences(Context.MODE_PRIVATE);
String drawable_name = pref.getString(item, null);
int id = getResources().getIdentifier(imageNameFromPreferences, drawable_name,
context.getPackageName());
return id;
}
public void saveImage(String item, String drawable_name) {
SharedPreferences starterSP = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor edit = starterSP.edit();
edit.putString(item, drawable_name);
edit.apply();
}