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

1

如果您要更改主题,SettingFragmentgetActivity().recreate()SettingFragment.

于 2018-10-22T04:50:35.160 回答