0

アプリにダークモードを追加しようとしており、主にこのサイト (チュートリアル) を使用して実装方法を学習しています。アプリを再起動するまでテーマが変わらないこと以外はすべて機能します。いくつかの調査の結果、recreate() がこの問題を修正する正しい方法であることがわかりましたが、どこに実装すればよいかわかりません。

現在、メイン アクティビティの oncreate メソッドは次のようになっています。

PreferenceManager.setDefaultValues(this, R.xml.settings_pref, false);
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    Boolean contrastPref = sharedPref.getBoolean (Navigation.KEY_PREF_CONTRAST_SWITCH, false);
    setTheme(contrastPref? R.style.AppTheme_Dark : R.style.AppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_navigation);........

これで oncreate メソッドのすぐ下に

public static final String
        KEY_PREF_CONTRAST_SWITCH = "contrast_switch";

プリファレンス スイッチを保持するフラグメントは次のようになります。

public  class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    setPreferencesFromResource(R.xml.settings_pref, rootKey);
}}

助けてくれてありがとう :)

4

1 に答える 1