Самое простое решение для этого - сохранить выбранную тему в SharedPreferences . Каждый раз, когда приложение запускается, вы читаете сохраненное значение из SharedPreferences и загружаете соответствующую тему.
Чтобы написать выбранную тему
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.selected_app_theme), YOUR_APP_THEME);
editor.commit();
Чтобы прочитать сохраненное значение
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.default_app_theme);
int appTheme = sharedPref.getInt(getString(R.string.selected_app_theme), defaultValue);
РЕДАКТИРОВАТЬ На основе комментария
Всякий раз, когда вы меняете тему своего приложения, вам необходимо сохранить ее в SharedPreferences. Поэтому всякий раз, когда вызывается метод changeToTheme , после изменения темы просто сохраните его в SharedPrefs. Вы можете создать метод, который сохранит тему следующим образом:
void saveThemeToSharedPrefs(int appTheme) {
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("MY_APP_THEME, appTheme);
editor.commit();
}
В следующий раз, когда ваше приложение запустится, вы загрузите это значение и будете использовать его для изменения темы следующим образом:
int getAppTheme() {
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = 0 //For Black theme. Change it to whatever you want as default
int appTheme = sharedPref.getInt("MY_APP_THEME", defaultValue);
}
//Change the theme in your starting activity
ThemeUtils.changeToTheme(activity, getAppTheme())