如何使用片段中的`setTheme`?

时间:2018-09-10 05:20:44

标签: android fragment android-theme

我有一个切换按钮,可以将主题切换为黑暗。因此它位于片段中。我设置的主题不是片段。我正在尝试从片段设置

private static final String PREFS_NAME = "prefs";
private static final String PREF_DARK_THEME = "dark_theme";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_settings, container,false);

    SharedPreferences preferences = getActivity().getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    boolean useDarkTheme = preferences.getBoolean(PREF_DARK_THEME, false);

    if(useDarkTheme) {
       setTheme(R.style.AppTheme_Dark_NoActionBar);
    }

此处“无法解析方法'setTheme(int)'”

    super.onCreate(savedInstanceState);

    Switch toggle = v.findViewById(R.id.themeSwitch);
    toggle.setChecked(useDarkTheme);

    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton view, boolean isChecked) {
            toggleTheme(isChecked);
        }
    });


    return v;
}
private void toggleTheme(boolean darkTheme) {
    SharedPreferences.Editor editor = getActivity().getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit();
    editor.putBoolean(PREF_DARK_THEME, darkTheme);
    editor.apply();
    Intent intent = getActivity().getIntent();
    getActivity().finish();
    startActivity(intent);
}

我正在尝试将主题切换为黑暗

0 个答案:

没有答案