Android共享首选项,Kotlin

jaxagkaj  于 2022-12-31  发布在  Android
关注(0)|答案(2)|浏览(188)

我有以下简单的代码。它获取文本框的值,保存它并检索。检索到的值与保存的值不同。
打印输出:值:qwert asdf
会有什么问题呢?

val sharedPref = getSharedPreferences("Data", Context.MODE_PRIVATE)
sharedPref.edit().putString("Str",binding.text.editText?.text.toString())
print("Value: ")
println(binding.text.editText?.text.toString())
sharedPref.edit().commit()
println(sharedPref.getString("Str","asdf"))

谢谢你事先的提示

whhtz7ly

whhtz7ly1#

SharedPreferences#edit为您提供了一个SharedPreferences.Editor类的示例,您将在该示例上调用putString方法,但不提交任何更改。
您的第二个sharedPref.edit().commit()只获得了一个没有任何版本的SharedPreferences.Editor的新示例,并且调用了commit,没有任何更改。
请尝试以下操作

val editor = sharedPrefs.editor()

editor.putString("key", "value")
editor.commit()

return sharedPrefs.getString("key", "defaultValue")

一种更惯用的方法是使用kotlin stdlib中的apply函数:

sharedPrefs.edit().apply {
  putString("key", "value")
  commit()
}
xzlaal3s

xzlaal3s2#

"你也可以这样尝试"

//For Add String Value in sharedPreferences
    val sharedPreferences = getSharedPreferences("key", MODE_PRIVATE) ?: return
    with(sharedPreferences.edit()) {
        putString("yourStringKey", "Hello World")
        apply()
    }
    
//Here get enter string value from sharedPreferences other activity 
    val sharedPreferences1 = getSharedPreferences("key", MODE_PRIVATE) ?: return
    val string = sharedPreferences1.getString("yourStringKey", "hi") //"hi" is default value
    Log.e("sharedPreferences1", "sharedPreferences1 Val is -->> $string")

如需了解更多信息,请参阅官方android文档

相关问题