アプリにダークモードを実装しようとしています。PreferenceFragment
現在、ネストされたを使用して UI モードを明るいモードと暗いモードに切り替えようとしていAppCompatActivity
ます。アプリは、デフォルト値としてライト テーマから開始して、次のように動作します。
- ListPreference で「暗い」を選択すると、設定の概要が変わりますが、UI はこれと他のすべてのアクティビティで明るいままです。
- もう一度「ダーク」を選択すると、バックスタック内の他のアクティビティと同様に、アクティビティがダーク テーマに切り替わります。
- 明るいテーマに戻したいときは、同じことが逆に起こります。
したがって、基本的にはすべて機能しますが、ListPreference で目的の値を 2 回選択する必要があります。ListPreference のコード:
final Preference listPreferenceDesign = findPreference(PREF_DESIGN);
listPreferenceDesign.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
if (((ListPreference) preference).getValue().equals("light")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else if (((ListPreference) preference).getValue().equals("dark")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
return true;
}
});
私がこれまでに試したこと:
- ステートメント
getActivity.recreate()
の前に呼び出すreturn true;
- 少し
getActivity.recreate()
遅れて、Handler
- ブール値が true の場合に親アクティビティ
this.recreate()
のメソッドを呼び出すonResume()
changedDesignSetting
今後ともよろしくお願いいたします。