クラス フィールドを宣言するにはどうすればよいでしょうか? 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