Androidのを使用して2つのプリファレンス(intとString)を設定するだけの最小限のプログラムがありPreferenceActivity
ます。したがって、設定を定義するxmlファイルと、を拡張するアクティビティがありますPreferenceActivity
。私のメインアクティビティには、設定アクティビティを起動するオプションメニューがあります。それはすべてうまくいきます。プリファレンスを設定でき、プログラムの実行中および実行後も値が保持されます。
さて、私の主な活動では、それらの設定を取得したいと思います。簡単なはずですよね?これが私が今まで見たすべてのサンプルからのコードです:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int intSetting = prefs.getInt("intSetting", 0);
String strSetting = prefs.getString("strSetting", "");
問題は、getInt()
通話を中断してステップオーバーすると、スタックが次のようになり、続行するとアプリがクラッシュすることです。
スレッド[<3>メイン](中断)
ActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord、Intent)行:2494
ActivityThread.handleLaunchActivity(ActivityThread $ ActivityRecord、Intent)行:2512
ActivityThread.access $ 2200(ActivityThread、ActivityThread $ ActivityRecord、Intent)行:119
ActivityThread $ H.handleMessage(Message)行:1863
ActivityThread $ H(Handler).dispatchMessage(Message)行:99 Looper.loop()行:123
ActivityThread.main(String [])行:4363 Method.invokeNative( Object、Object []、Class、Class []、Class、int、boolean)行:使用不可[ネイティブメソッド] Method.invoke(Object、Object ...)行:521
ZygoteInit $ MethodAndArgsCaller.run()行:860 ZygoteInit.main(String [])行:618 NativeStart.main(String [])行:使用不可[ネイティブメソッド]
getDefaultSharedPreferences()に渡されるパラメーターのバリエーションを試しました。これには、次のものが含まれます。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
...そしておそらく別のコンテキストにある他のいくつか(つまり、メインアクティビティから別のアクティビティvs.アクティビティではないクラスの関数にアクセスする場合。結果は常に同じです。
私と同じコードを書くことで問題を解決したこの問題を抱えている他の人からのWeb上のQ&A投稿を十数回読んだので、解決策があるとは思いませんが、誰かアイデアがあれば教えてください。