kotlin教學 - kotlin android優點



財產必須初始化或是抽象的 (2)

如果您想在構造函數外部 初始化屬性 ,那麼您可能正在尋找 延遲初始化的屬性 。 使用 lateinit 修飾符聲明屬性,這將允許跳過其他必需的初始化程序,並使屬性訪問失敗,異常,直到為其分配了一些有意義的值:

protected lateinit var sharedPreferences: SharedPreferences

https://src-bin.com

這一定是個愚蠢的問題,但我對Kotlin來說真的很新,我找不到任何解決方案。

如何聲明類字段? 就像我們可以在java中一樣:

protected SharedPreferences mSharedPreferences;

後來在 onCreate()

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

現在我可以在任何我想要的地方使用它(在這個基本活動的子類中)。

我試著在Kotlin做同樣的事情:

protected var sharedPreferences : SharedPreferences

onCreate()

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

但我得到一個警告:“財產必須初始化或是抽象的”


Answer #1

從亞歷山大·烏達洛夫(Alexander Udalov)的可見性回答中得出這一點。 對於可以為空的屬性:

protected var sharedPreferences : SharedPreferences? = null

...並在以後為其分配值。





kotlin