Java 首选项活动主题背景未更改

Java 首选项活动主题背景未更改,java,android,android-preferences,Java,Android,Android Preferences,我的应用程序有一个功能,可以根据用户从“设置”菜单中的选择在明暗主题之间切换。除“设置”菜单外,此功能正常工作。在黑暗主题上时,它只更改文本,而不更改背景和动作栏。我添加了一张黑色屏幕的图片。为什么要这样做 编辑:更改主题的代码。在开始创建时调用主题 public static void theme(Activity activity) { if (userChoice==true)activity.setTheme(R.style.HoloDark); else

我的应用程序有一个功能,可以根据用户从“设置”菜单中的选择在明暗主题之间切换。除“设置”菜单外,此功能正常工作。在黑暗主题上时,它只更改文本,而不更改背景和动作栏。我添加了一张黑色屏幕的图片。为什么要这样做

编辑:更改主题的代码。在开始创建时调用主题

public static void theme(Activity activity) {
        if (userChoice==true)activity.setTheme(R.style.HoloDark);
        else if (userChoice==false)activity.setTheme(R.style.HoloLight);
    }

public void loadPreferences() {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        boolean test = settings.getBoolean("nightmode", false);
        settings.registerOnSharedPreferenceChangeListener(MainActivity.this);
        if (test == true)userChoice=true;
        else if (test == false)userChoice=false;        
    }

如果您还发布一些代码(如何更改主题),将有助于我们理解这个问题。我想你必须做一些在其他活动中不需要的刷新,因为你在导航到它们时正在创建它们。我将在刷新方面支持@Laviniux,并发布一些代码,以便我们可以帮助你确定我添加了我使用的代码。问题是onCreate只调用一次(在创建活动时)。您可以在更改主题后重新启动活动(强制它在onCreate中更改主题)。另请参阅本文:另一种方法是,如果更改不太多(例如更改背景),则手动进行更改,因为重新启动活动效率不高。主题更改正确。问题是主题只会影响文本。