Android 使用getStringSet和putStringSet会丢失一些值

Android 使用getStringSet和putStringSet会丢失一些值,android,sharedpreferences,Android,Sharedpreferences,我发现在重新启动应用程序后,存储到Set的一些值丢失了。为什么?这是安卓API错误吗?有人建议在数据库中存储字符串。我还没有测试过它,但我认为这个建议可以解决这个问题。那么getStringSet和putStringSet呢?据我所知,这是一个bug。问题是,当您尝试存储一个集合时,Android会将您尝试保存的修改集合与存储在SharedReferences中的当前集合进行比较。当它们是相同的对象(具有相同的引用)时,新对象将被忽略 解决方法是在存储集合之前创建集合的新副本 是详细信息,问题提

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

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

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


是详细信息,问题提交于。

我在使用SharedReferences时遇到同样的问题。Android API中似乎有一个bug。我在上面发了一篇小帖子


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

SharedReferences.Editor=preferences.edit()
删除(键)
commit()
编辑器.putStringSet(键,值)

commit()

谢谢。但是,我预先提供了一个数据库,其中一个表包含字符串的
非空唯一文本。代码很好,但解释对所有未来的观众来说都更好。