SharedPreferences重置:重置后映射大小不为0

时间:2012-11-19 14:14:20

标签: android android-preferences

我正在尝试删除我的SharedPreferences,但它不起作用:size未设置为0,正如我所料。

SharedPreferences sp = context.getSharedPreferences(name, mode);
SharedPreferences.Editor e = sp.edit();
e.clear();
e.commit();
Map<String, ?> map = sp.getAll();
int size = map.size();

有什么建议吗?

private static String name = "ABC_PREFS";
private static int mode = Context.MODE_PRIVATE;

3 个答案:

答案 0 :(得分:1)

通过阅读,您的代码看起来很不错。您确定上下文变量已正确初始化吗?是否其他SharedPreferences变量指向同一个文件?

如果这些不是问题,请考虑使用最小样本应用并粘贴此代码以查看它是否仍然失败。使用完整的应用程序比使用代码片段更容易解决这样的问题。

答案 1 :(得分:0)

SharedPreferences.Editor.clear()只删除您偏好的值,这对您来说还不够吗?您可以使用SharedPreferences.Editor.remove()删除所有条目:

    for (String key: sp.getAll().keySet()) {
        e.remove(key);
    }
    e.commit();

答案 2 :(得分:-2)

您可以将地图的大小写入共享首选项:

e.clear();
e.putInt("size", map.size());
e.commit();

获取地图通话的大小:

int size = sp.getInt("size", 0);