首页 > 解决方案 > Kotlin Android Shared Preferences - lateinit 属性首选项尚未初始化

问题描述

我尝试按照本教程进行操作,但是当我尝试为我的 Sh.Preference ( prefs.token = "sometoken") 分配值时发生错误:

kotlin.UninitializedPropertyAccessException: lateinit property prefs has not been initialized

我不明白错误在哪里,我也检查了这个线程。这是我的代码片段

首选项.kt:

class Prefs(context: Context) {
    private val PREFS_FILENAME = "com.example.myapp.prefs"
    private val PREFS_TOKEN = "token"
    private val prefs: SharedPreferences = context.getSharedPreferences(PREFS_FILENAME, 0)

    var token: String?
        get() = prefs.getString(PREFS_TOKEN, "")
        set(value) = prefs.edit().putString(PREFS_TOKEN, value).apply()
}

应用程序.kt:

val prefs: Prefs by lazy {
    App.prefs
}

class App : Application() {
    companion object {
        lateinit var prefs: Prefs
    }

    override fun onCreate() {
        prefs = Prefs(applicationContext)
        super.onCreate()
    }
}

prefs.token有一个默认值"",那么为什么日志说还没有初始化呢?

标签: androidkotlinsharedpreferences

解决方案


好的,问题找到了...代码没问题,我只是错过了添加这一行

android:name=".App"

<application在我的 Android 清单的标签 中。


推荐阅读