2016-04-13 6 views
-5

アクティビティの先頭に共有プリファレンスを作成したとき、私のアプリケーションは実行時に失敗します。 一方、共有プリファレンスをメソッド内に配置すると、アプリが円滑に実行されます。 共有の設定をクラスの最上位に配置したいので、すべての単一のメソッドで共有の設定を作成する必要はありません。アンドロイドの活動のトップに共有プリファレンスを作成できないのはなぜですか?

共有設定をグローバルに作成できないのはなぜですか?共有された環境設定をグローバルオブジェクトとして作成できないことを理解したので、すべての方法で共有環境設定を作成する必要はありませんか?

+3

'SharedPreferences'変数をクラスフィールドとして宣言できますが、' onCreate() 'まで初期化することはできません。 –

答えて

3

アクティビティでグローバルスコープで初期化すると仮定します。これは、アクティビティがonCreateが呼び出されるまで有効なコンテキストではないためです。コンストラクタが呼び出された時点(これらの変数が初期化されているとき)には、クラスは有効である必要があるすべてのデータで設定されていないため、コンテキストとして使用するとクラッシュする可能性があります。

関連する問題