我正在创建具有2个活动的应用,并希望在第一个和第二个活动中设置主题onclick按钮。
方法setTheme()仅在第一次活动时起作用
if(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
setTheme(R.style.OLEDTheme);
} else {
setTheme(R.style.AppTheme);
}
Switch oledModeSwitch = (Switch) findViewById(R.id.OLEDSwitch);
if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
oledModeSwitch.setChecked(true);
}
oledModeSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean Check) {
Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
finish();
if (Build.VERSION.SDK_INT >= 21) {
overridePendingTransition(R.anim.from_alpha, R.anim.to_alpha);
}
startActivity(intent);
if (Check) {
Toast.makeText(getApplicationContext(), "Тема успешно активирована", Toast.LENGTH_SHORT).show();
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Toast.makeText(getApplicationContext(), "Тема успешно дезактивирована", Toast.LENGTH_SHORT).show();
}
}
});
主题仅设置第一个活动,但我希望在第一个和第二个活动上设置
答案 0 :(得分:0)
当您致电setTheme()
时,它只会更改进行呼叫的Activity
的主题。如果要更改整个应用程序的主题,则应在SharedPreferences
中记录主题设置,然后在每个Activity
中,应从SharedPreferences
中读取当前主题并调用{{ 1}}中的那个setTheme()
。