android - 属性必须被初始化或者是抽象的

标签 android kotlin

如何声明类字段?就像我们可以在 java 中一样:

protected SharedPreferences mSharedPreferences;

后来在onCreate()中:

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

现在我可以在任何我想要的地方使用它(在这个基础 Activity 的子类中)。

我尝试在 Kotlin 中做同样的事情:

protected var sharedPreferences : SharedPreferences

而在onCreate()中:

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

但我收到警告:“属性必须初始化或抽象”

最佳答案

如果你想在构造函数之外初始化一个属性,那么 late-initialized properties是您可能正在寻找的。使用 lateinit 修饰符声明属性,这将允许跳过其他需要的初始化程序,并使属性访问失败并出现异常,直到为其分配了一些有意义的值:

protected lateinit var sharedPreferences: SharedPreferences

关于android - 属性必须被初始化或者是抽象的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849811/

相关文章:

regex - 使用多字符正则表达式模式进行分割并保留分隔符

kotlin - 为什么 @JsonProperty 不适用于 Kotlin 中的驼峰式属性

android - 更改在android中单击的按钮的图库 View

c# - 由于先决条件,Unity Android 运行失败

android - “com.google.android.gms.common.api.GoogleApiClient”已弃用

android - 如何检查数据是否插入到房间数据库中

AndroidNetworking 在 Kotlin 中的 suspendCoroutine 中永远不会返回

android - 交换接口(interface)混凝土时Dagger 2 MissingBinding

android - 无法取消 Corona 中的组转换以避免内存泄漏

当 ListView 处于 ScrollView 中时,未检查自定义 ListView 的android复选框