使用getStringSet和putStringSet丢失一些值

时间:2013-03-28 09:12:00

标签: android sharedpreferences

我发现在重新启动应用程序后,某些值已存储到Set丢失了。为什么?这是一个Android API错误吗?有人建议将字符串存储在数据库中。我还没有测试过,但我认为这个建议是问题的解决方案。那么getStringSetputStringSet呢?

3 个答案:

答案 0 :(得分:6)

据我了解,这是一个错误。问题是当您尝试存储集合时,Android会将您尝试保存的已修改集合与存储在SharedPreferences中的当前集合进行比较。当它们是同一个对象(具有相同的引用)时,将忽略新的对象。

解决方法是在存储之前创建该集的新副本。

Here是详细信息,问题已在https://code.google.com/p/android/issues/detail?id=27801提交。

答案 1 :(得分:3)

SharedPreferences.Editor editor = preferences.edit();
editor.remove(键);
editor.commit();
editor.putStringSet(key,value);
editor.commit();

答案 2 :(得分:0)

我使用SharedPreferences时遇到了同样的问题。 Android API中似乎存在错误。我在帖子上发了一个小帖子here

对我来说最简单的方法是删除它,提交它,然后把它再次提交