Android studio SharedReference未保存最后添加的stringSet

Android studio SharedReference未保存最后添加的stringSet,android-studio,kotlin,sharedpreferences,Android Studio,Kotlin,Sharedpreferences,当我尝试将stringSet中的第一个字符串保存到它正常保存的SharedReferences时,但在尝试将另一个字符串保存到stringSet后,它显示为已保存,但当重新启动应用程序并检索数据时,当我再次尝试单击相同的功能按钮时,它仅显示已保存的第一个字符串,它不会保存到sharedPreferecnes,但单击另一个具有相同功能的按钮将保存我觉得奇怪的上一个按钮。这是我的密码 button.setOnClickListener { val orderPrefs = getShared

当我尝试将stringSet中的第一个字符串保存到它正常保存的SharedReferences时,但在尝试将另一个字符串保存到stringSet后,它显示为已保存,但当重新启动应用程序并检索数据时,当我再次尝试单击相同的功能按钮时,它仅显示已保存的第一个字符串,它不会保存到sharedPreferecnes,但单击另一个具有相同功能的按钮将保存我觉得奇怪的上一个按钮。这是我的密码

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()