我正在尝试清除列表,我需要清除其中的SharedPreference。但是在这样做的时候,我得到了一个nullpointerexception。 这是我的代码。 -
MainActivity.savedLogName.edit().clear().commit();
MainActivity.savedLogNumber.edit().clear().commit();
MainActivity.savedLogTime.edit().clear().commit();
我也尝试过使用remove(),但同样的错误仍然存在。这是使用remove()
的代码MainActivity.savedLogName.edit().remove("logName").commit();
MainActivity.savedLogNumber.edit().remove("logNumber").commit();
MainActivity.savedLogTime.edit().remove("logTime").commit();
注意 - savedlogName,savedLogNumber和savedLogTime是MainActivity中声明的静态变量。我是从不同的活动类中调用它们的。
来自MainActivity -
savedLogName = PreferenceManager.getDefaultSharedPreferences(this);
savedLogNumber = PreferenceManager.getDefaultSharedPreferences(this);
savedLogTime = PreferenceManager.getDefaultSharedPreferences(this);
logName = new ArrayList(Arrays.asList(TextUtils.split(savedLogName.getString("logName", null), ",")));
logNumber = new ArrayList(Arrays.asList(TextUtils.split(savedLogNumber.getString("logNumber", null), ",")));
logTime = new ArrayList(Arrays.asList(TextUtils.split(savedLogTime.getString("logTime", null), ",")));
如果sharedPreference为空,我希望logName,logNumber和logTime初始化为null。这并没有发生。它只是初始化为旧值,就像它从未被清除过一样。
答案 0 :(得分:1)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
删除所有首选项
或者获取编辑器并像这样清楚
editor.clear();
editor.commit();