0

アプリの設定を含むsettings.xmlファイルがあります。デフォルトではすべての値が「true」に設定されており、アプリのPreferenceActivityで使用されます。私の主な活動では、値を読みます

     SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(appContext);
     Boolean key = sp.getBoolean("M", false);

初回以外の実行で必要なものは何でも取得します。アプリを初めて開いて設定メニューを開かない場合にのみ、「false」が表示されます。つまり、メニューを開く必要があり、その後でアプリが正しく実行されます。

助言がありますか?

4

2 に答える 2

2

yorが初めてデフォルト値を取得しているためです。それは誤りです->

Boolean key = sp.getBoolean("M", false);

これを使って

Boolean key = sp.getBoolean("M", true);
于 2012-12-25T08:20:45.003 に答える
0

sp.getBoolean("M", true);代わりに使用してください。プリファレンスファイルのデフォルト値は、プリファレンスアクティビティが最初に開始されたときの値です。SharedPreferencesはsettings.xmlについて何も知りません。

または、すべての設定のすべてのデフォルト値を含む個別のdefaults.xmlファイル(またはその他の名前)を作成することもできます。次に、settings.xml(@bool/default_M_value)とアプリケーション(sp.getBoolean("M", getResources().getBoolean(R.bool.default_M_value)))の両方でこれらの値を使用します。

個人的には最初のアプローチに固執します。

于 2012-12-25T08:15:39.643 に答える