这一定是个愚蠢的问题,但我对Kotlin来说真的很新,我找不到任何解决方案。
如何声明类字段?就像我们可以在java中一样:
protected SharedPreferences mSharedPreferences;
稍后在onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
现在我可以在任何我想要的地方使用它(在这个基本活动的子类中)。
我尝试在Kotlin做同样的事情:
protected var sharedPreferences : SharedPreferences
在onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
但我得到一个警告:"财产必须初始化或是抽象的"
答案 0 :(得分:139)
如果您想在构造函数外部初始化属性,那么late-initialized properties就是您可能正在寻找的内容。使用lateinit
修饰符声明属性,这将允许跳过其他必需的初始化程序,并使属性访问失败,异常,直到为其分配了一些有意义的值:
protected lateinit var sharedPreferences: SharedPreferences
答案 1 :(得分:2)
将其从Alexander Udalov答案的可见性中删除。 对于可为空的属性:
protected var sharedPreferences : SharedPreferences? = null
...然后再为其分配一个值。