我发现在重新启动应用程序后,某些值已存储到Set
丢失了。为什么?这是一个Android API错误吗?有人建议将字符串存储在数据库中。我还没有测试过,但我认为这个建议是问题的解决方案。那么getStringSet
和putStringSet
呢?
答案 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
对我来说最简单的方法是删除它,提交它,然后把它再次提交