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