2013-03-28 74 views
3

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

回答

5

从我的理解,这是一个错误。问题在于,当你尝试存储一个集合时,Android会将你正在尝试保存的已修改集合与存储在SharedPreferences中的当前集合进行比较。当它们是同一个对象(具有相同的参考)时,新的被忽略。

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

Here是细节和问题提交https://code.google.com/p/android/issues/detail?id=27801

+0

谢谢。但是我用一个包含“NOT NULL UNIQUE TEXT”字符串的表格来表示一个数据库。 – 2013-03-28 16:30:32

0

我有使用SharedPreferences相同的问题。 Android API似乎存在一个错误。我做了就可以了小哨here

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

3

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

+0

尝试解释这个答案多一点。代码很好,但解释对所有未来的观众更好。 – SuperPrograman 2013-10-16 02:27:41