我正在使用Gson Library保存共享首选项中的自定义对象列表
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(planmanobraBeanArrayList);
prefsEditor.putString("list", json);
prefsEditor.apply();
并从共享首选项中获取数据我使用了以下代码
Gson gson = new Gson();
String json1 = mPrefs.getString("list", "");
Type type = new TypeToken<ArrayList<PlanmanobraBean>>() {
}.getType();
storedata = gson.fromJson(json1, type);
这件事工作得很完美,但我从共享首选项中删除它们时遇到了问题。
我想在按钮点击时从共享首选项中删除它,此按钮处于活动中,该活动在我存储数据的此活动之前打开。所以在点击上一个活动的按钮时我做了这个
mPrefs = PlaniActivity.this.getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.putString("list", "");
prefsEditor.apply();
SharedPreferences.Editor prefsEditor1 = mPrefs.edit();
prefsEditor1.putString("platamatBeansArrayList", "");
prefsEditor1.apply();
我试图为这些列表设置空值,因为我没有找到任何其他方法从共享首选项中删除数据,但问题是此代码也无法正常工作,我仍然可以看到存储来自共享偏好的数据。
从共享首选项中删除数据的正确方法应该是什么。
答案 0 :(得分:1)
从共享偏好设施中删除数据的正确方法应该是什么。
使用remove
方法可能是正确的方法。
mPrefs = PlaniActivity.this.getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.remove("list");
您也只需要一个编辑器,所以只需要删除项目
prefsEditor.remove("platamatBeansArrayList");
您只需在最后应用或提交一次,因为所有事件都排队等候。
prefsEditor.apply();
关于跨活动使用SharedPreferences,我通常使用Singleton类来处理所有这些,但getApplicationContext().getSharedPreferences()
可能比仅获取当前Activity的SharedPreferences更好。