Я создаю SettingsActivity, чтобы пользователи могли устанавливать предпочтения. Одним из предпочтений является цвет кожи.
Intent settingIntent = new Intent(this, SettingsActivity.class);
startActivity(settingIntent);
Как только пользователь закончит настройку, он нажмет кнопку «Готово», чтобы вернуться к MainActivity.
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setClass(this, MainActivity.class);
startActivity(intent);
finish();
Но MainActivity на самом деле не меняется.
Я понимаю, что применяю изменения только в onCreate()
setTheme(SettingsActivity.getSkinColor()); // Get the preference from SharedPreference
setContentView(R.layout.mylayout);
В этом случае я думаю, что мне нужно воссоздать активность. Поэтому я меняю intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) на intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).
Однако он создаст новую MainActivity, когда пользователь нажмет кнопку «Готово».
Есть ли способ применить setTheme без воссоздания активности? Или, по крайней мере, сохранить все экземпляры времени выполнения и состояние, когда я создаю новый?