Android studio SharedReference未保存最后添加的stringSet
当我尝试将stringSet中的第一个字符串保存到它正常保存的SharedReferences时,但在尝试将另一个字符串保存到stringSet后,它显示为已保存,但当重新启动应用程序并检索数据时,当我再次尝试单击相同的功能按钮时,它仅显示已保存的第一个字符串,它不会保存到sharedPreferecnes,但单击另一个具有相同功能的按钮将保存我觉得奇怪的上一个按钮。这是我的密码Android studio SharedReference未保存最后添加的stringSet,android-studio,kotlin,sharedpreferences,Android Studio,Kotlin,Sharedpreferences,当我尝试将stringSet中的第一个字符串保存到它正常保存的SharedReferences时,但在尝试将另一个字符串保存到stringSet后,它显示为已保存,但当重新启动应用程序并检索数据时,当我再次尝试单击相同的功能按钮时,它仅显示已保存的第一个字符串,它不会保存到sharedPreferecnes,但单击另一个具有相同功能的按钮将保存我觉得奇怪的上一个按钮。这是我的密码 button.setOnClickListener { val orderPrefs = getShared
button.setOnClickListener {
val orderPrefs = getSharedPreferences("order", Context.MODE_PRIVATE)
val editor = orderPrefs.edit()
var test = orderPrefs.getStringSet("recentlyViewedRestaurant", null)
if (test == null) {
test = HashSet<String>(0)
}
test.add(restaurantName)
//Log.d("LastPicked", test.toString())
editor.putStringSet("recentlyViewedRestaurant", test)
editor.apply()
val testing = getSharedPreferences("order", Context.MODE_PRIVATE)
//it will retrieve and show the expected result but leaving the page
//and retrieving from another activity won't show the last added string
Log.d(
"lastPicked",
testing.getStringSet("recentlyViewedRestaurant", null).toString()
)
}
button.setOnClickListener{
val orderPrefs=GetSharedReferences(“顺序”,Context.MODE\u PRIVATE)
val editor=orderpres.edit()
var test=orderPrefs.getStringSet(“最近查看的Restaurant”,null)
if(test==null){
test=HashSet(0)
}
test.add(restaurantName)
//Log.d(“LastPicked”,test.toString())
编辑器.putStringSet(“最近查看的重建”,测试)
editor.apply()
val测试=GetSharedReferences(“顺序”,Context.MODE\u PRIVATE)
//它将检索并显示预期结果,但会离开页面
//并且从另一个活动中检索不会显示最后添加的字符串
对数d(
“最后挑选”,
testing.getStringSet(“recentlyViewedRestaurant”,null).toString()
)
}
我看不到您在保存字符串后添加“.apply()”
例:
您不应修改stringset,而应修改其副本@laalto我正在读关于它的文章,谢谢你的快速回复response@laalto它成功了,非常感谢OP的代码中有
commit()
,是的,我用commit()作为标志
val orderPrefs = getSharedPreferences("order", Context.MODE_PRIVATE)
val editor = orderPrefs.edit()
editor.putStringSet("recentlyViewedRestaurant", test).apply()