财产必须被初始化或是抽象的
这一定是个愚蠢的问题,但是我对Kotlin真的很陌生,而且我没有找到任何解决办法。
如何声明类字段? 就像我们可以在java中一样:
protected SharedPreferences mSharedPreferences;
后来在onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
现在我可以在任何地方使用它(在这个基本活动的子类中)。
我试图在科特林做同样的事情:
protected var sharedPreferences : SharedPreferences
在onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
但我得到一个警告:“财产必须被初始化或是抽象的”
如果你想在构造函数外初始化一个属性,那么你可能正在寻找后期初始化的属性 。 使用lateinit
修饰符声明该属性,这将允许跳过其他需要的初始化程序,并使属性访问失败,并将异常分配给某个有意义的值:
protected lateinit var sharedPreferences: SharedPreferences