Android:SharedPreferences getStringSet()在启动应用程序

时间:2018-03-03 21:34:50

标签: android kotlin android-sharedpreferences

我正在尝试使用SharedPreferences作为我<&strong>最喜欢的商品ID &#39;的存储空间。我在我的Kotlin Android应用程序中使用它。

当我调用将值存储到SharedPreferences的方法时,我想保存Set Strings。每当我在我的应用程序中检查它们时,值都会出现在SharedPreferences对象中。但是,当我关闭应用程序(在应用程序中关闭应用程序或应用程序崩溃时),然后再次打开应用程序时SharedPreferences的内容为[],如果我没有在{{{{}}中保存任何内容1}}在应用程序运行期间。如果我将某些内容保存到SharedPreferences关闭应用并再次打开,则只会加载SharedPreferences一个元素Set

似乎我在[1]使用SharedPreferences putStringSet()存储了一些内容只有一个元素Set的{​​{1}}在应用程序崩溃后写入[1]或者被关闭。

我已多次调试应用程序,将调试日志放在各处,但无法找到原因。

有人可以帮忙吗?

我不确定我是否需要SharedPreferences或其他地方的某些权限?

为了更好地了解该应用:

我使用的是Android Emulator(也许它需要一些特殊的设置?)

更多活动正在访问相同的AndroidManifest,基本上是我写入的一个活动,另一个是我从中读取的活动。

我用于将值存储到SharedPreferences中的方法:

SharedPreferences

我用这个方法从SharedPreferences获取值:

fun saveFavorite(id: Long){
    val favorites = sharedPreferences.getStringSet(preferencesKey, setOf<String>())
    favorites.add(id.toString())
    with (sharedPreferences.edit()) {
       putStringSet(preferencesKey, favorites)
       commit()
    }
}

0 个答案:

没有答案