财产必须被初始化或是抽象的

这一定是个愚蠢的问题,但是我对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