プロパティは初期化されているか抽象である必要があります 質問する

プロパティは初期化されているか抽象である必要があります 質問する

クラス フィールドを宣言するにはどうすればよいでしょうか? Java で次のようにできます。

protected SharedPreferences mSharedPreferences;

そしてその後onCreate()

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

これで、どこでも(この基本アクティビティのサブクラス内で)使用できるようになりました。

Kotlin でも同じことをやってみます:

protected var sharedPreferences : SharedPreferences

そしてonCreate()

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

しかし、警告が表示されます: 「プロパティは初期化されているか、抽象化されている必要があります」

ベストアンサー1

コンストラクタの外でプロパティを初期化したい場合は、遅延初期化プロパティ探しているものかもしれません。修飾子を使用してプロパティを宣言するとlateinit、必要な初期化子をスキップでき、意味のある値が割り当てられるまで、プロパティへのアクセスは例外で失敗します。

protected lateinit var sharedPreferences: SharedPreferences

おすすめ記事