1. ホーム
  2. android

[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?

2022-07-21 20:28:47

質問

PreferenceActivity を使用して、ユーザーが値を設定できるようにしています。 私は、定義されたプリファレンスを含む xml ファイルを与えています。

私はすべての android:defaultValue="" を設定しました。

アプリケーションを起動するとき、環境設定が必要です。まだ手動で設定されていない場合は、デフォルト値が必要です。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false); 

しかし android:defaultValue="true" になっても false . つまり、XMLで設定されたdefaultValueは、プリファレンス画面を初期化するとき以外には使われていないようです。

にデフォルト値をハードコードするのは嫌ですね。 getBoolean() メソッドにハードコードしたくありません。そこで、1箇所で定義するだけでデフォルト値を取得する方法はないでしょうか?

どのように解決するのですか?

この質問は、私と似ています。

初期化-プリファレンス-from-xml-in-main-activity

このコードを onCreate メソッドに記述してください。

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

これはXMLから設定を読み込み、最後のパラメータ( readAgain ) は、ユーザーの設定が上書きされないことを保証します。つまり readAgain 引数を false は、このメソッドが過去に一度も呼び出されなかった場合にのみデフォルト値が設定されることを意味します。したがって、Activityが作成されるたびにユーザーの設定を上書きする心配はありません。

次に PreferenceManager.setDefaultValuesを参照してください。 を調べてみてください。