我的应用中有一个设置,用户可以在其中更改主题。可以通过导航抽屉访问设置,因为我想要一个“汉堡包菜单图标”,我不得不从我的基础活动中扩展AppCompatActivity。
我的styles.xml非常简单:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<style name="DarkTheme" parent="Theme.AppCompat">
</style>
和我的onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
sharedPreferences.registerOnSharedPreferenceChangeListener(MainActivityTransmit.this);
Theme = sharedPreferences.getString("theme_preference","1");
switch(Theme) {
case "AppTheme":
setTheme(R.style.AppTheme);
break;
case "DarkTheme":
setTheme(R.style.DarkTheme);
break;
default:
break;
}
setContentView(R.layout.activity_main_transmit);
之前,当我只扩展Activity(并使用常规Material主题)时,这个工作正常。但是,现在当我扩展AppCompatActivity(并使用AppCompat主题)时,它不起作用。
文本颜色会根据我更改的主题而改变,但屏幕和操作栏的背景颜色与AndroidManifest中的背景颜色相同(在我的情况下为DarkTheme)。
为什么它突然变得与众不同只是因为我使用AppCompat并且如何修复它?