当我单击“夜间模式”按钮时,它仅适用于activity_main
,而其他活动则不是夜间模式。
Switch mSwitchNightMode = (Switch) menu.findItem(R.id.item_switch)
.getActionView().findViewById(R.id.Switchedbtn);
// Get state from preferences
if (isNightModeEnabled()) {
mSwitchNightMode.setChecked(true);
} else {
mSwitchNightMode.setChecked(false);
}
mSwitchNightMode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (isNightModeEnabled()) {
setIsNightModeEnabled(false);
setAppTheme(R.style.NightMode);
} else {
setIsNightModeEnabled(true);
setAppTheme(R.style.AppTheme);
}
// Recreate activity
recreate();
}
});
答案 0 :(得分:0)
您不能以这种方式将MainActivity的选定样式应用于其他Activity。 创建每个活动时,您应该从首选项中检查状态,并相应地设置主题。
建议您在整个应用程序中使用一个主题。 主题应该这样声明
<style name="MyTheme" parent="Theme.AppCompat.DayNight">
然后,您应该在AndroidManifest.xml的application标签内添加此主题
<application
android:name="pkg"
android:theme="@style/MyTheme"
/>
最后,您可以在“应用程序”类的“首选项”中检查状态 然后像这样涂黑
if(isNightModeEnabled()){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}else{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}