我使用这样的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();
我尝试为这些列表添加空值,因为没有找到其他方法从共享首选项中删除数据,但是问题是此代码也无法正常工作,我仍然能够从共享首选项中查看存储的数据。
从共享首选项中删除数据的正确方法应该是什么?
最佳答案
从共享首选项中删除数据的正确方法应该是什么?
使用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更好。