gpt4 book ai didi

android - Kotlin-初始化SharedPreferences

转载 作者:行者123 更新时间:2023-12-02 13:28:45 26 4
gpt4 key购买 nike

我正在尝试使用Kotlin中的sharedpreferences(特别是使用Android Studio)加载和保存数据。
我收到此错误消息:

java.lang.NullPointerException: Attempt to invoke virtual method'android.content.SharedPreferencesandroid.content.Context.getSharedPreferences(java.lang.String, int)'on a null object reference


指向我对共享首选项的初始化。
class MainActivity : AppCompatActivity(), SensorEventListener {

private val dragonstats by lazy {getSharedPreferences("DRAGON_STATS",Context.MODE_PRIVATE)}
如果我这样写,我会得到同样的错误:
val dragonstats = getSharedPreferences("DRAGON_STATS", Context.MODE_PRIVATE)
我在其他答案中也看到过这样声明:
SharedPreferences dragonstats
但这在 Kotlin 没有读到。
共享首选项上的android.com文件表示要以这种方式声明它:
val sharedPref = activity?.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
但这给 Activity 带来了一个 Unresolved reference 错误。
如何初始化SharedPreferences文件,以便可以在Kotlin中存储和检索数据?

编辑:
因此,使该功能起作用的唯一方法是放置?一切。
我在oncreate之外声明了它,因此我可以在整个过程中使用它:
var dragonstats: SharedPreferences? = null
在oncreate我设置它:
dragonstats = PreferenceManager.getDefaultSharedPreferences(this)
然后,当我想调用它的任何一个时,我使用?:
exerciselevel = dragonstats?.getInt("exerciselevel", 0)!!
我不明白为什么这行得通,但没有其他办法。

最佳答案

我这样写。

// in global
private lateinit var pref: SharedPreferences

override fun onCreate(savedInstanceState: Bundle?) {
...
pref = getSharedPreferences("mysharedpref", Context.MODE_PRIVATE)
...
}

关于android - Kotlin-初始化SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62563670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com