android - 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
有一个默认值""
,那么为什么日志说还没有初始化呢?
解决方案
好的,问题找到了...代码没问题,我只是错过了添加这一行
android:name=".App"
<application
在我的 Android 清单的标签
中。
推荐阅读
- ios - 为 UITextView 调整FontSizeToFitWidth
- r - 遍历行并计算与 R 中的多个条件匹配的行数
- regex - 在 Mac 上使用 grep 和 TextWrangler 拆分文件的内容(搜索和替换)
- javascript - 如何根据对象属性对数组中的对象键进行排序?
- amazon-web-services - 支持数据湖设置的服务
- angular - 如何使用Angular7使一个编辑按钮适用于动态表中的多行
- tensorflow - YOLOv2 上的深度压缩
- reactjs - 为什么我的 react-table TdComponent 没有从我的状态获取道具
- python - 如何阻止 Tabula 自动删除空列?
- spring-boot - 在 ServletContext 中找不到属性 ServerContainer