我的应用程序有一个非常奇怪的问题:在首选项活动中,我在(子)首选项屏幕下提供了一个列表首选项,用户在其中选择"浅色"或"深色"。 所以我设置了一个OnPreferenceChangedListener,当用户触发它时,我将重新创建Prefs。这行得通。但是按后退按钮将显示旧主题配置中的基础活动。那么如何管理呢?
找到了一个解决方案。现在我正在完成主活动,在首选项中我覆盖了后退按钮。这似乎效果很好。也许任何人都有其他解决方案。我对被覆盖的后退按钮不太满意 - 在早些时候,我被这个"技巧"弄得有点麻烦。
themePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
changetheme();
return true;
}
});
}
private void changetheme() {
recreate();
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
Intent backToMain = new Intent(SettingsActivity.this, MainActivity.class);
backToMain.putExtra("data", "test");
startActivity(backToMain);
}