SharedPreference clear()抛出nullpointerexception

时间:2014-10-22 09:01:44

标签: java android nullpointerexception

我正在尝试清除列表,我需要清除其中的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。这并没有发生。它只是初始化为旧值,就像它从未被清除过一样。

1 个答案:

答案 0 :(得分:1)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit(); 

删除所有首选项

或者获取编辑器并像这样清楚

editor.clear();
editor.commit();