在首选项(活动堆栈?)中更改后显示以前的主题



我的应用程序有一个非常奇怪的问题:在首选项活动中,我在(子)首选项屏幕下提供了一个列表首选项,用户在其中选择"浅色"或"深色"。 所以我设置了一个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);
    }

最新更新