5

我正在尝试删除我的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;
4

3 回答 3

2

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

如果这些都不是问题,请考虑采用最小的示例应用程序并将此代码粘贴到其中,看看它是否仍然失败。使用完整的应用程序比仅使用代码片段更容易解决此类问题。

于 2012-11-26T09:03:19.560 回答
0

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

    for (String key: sp.getAll().keySet()) {
        e.remove(key);
    }
    e.commit();
于 2012-12-01T22:00:35.550 回答
-3

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

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

要获取地图调用的大小:

int size = sp.getInt("size", 0);
于 2012-11-26T00:14:59.237 回答