【发布时间】:2013-02-20 19:07:21
【问题描述】:
我创建了一个 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?或者至少在我创建一个新实例时保留所有运行时实例和状态?
【问题讨论】:
标签: android android-activity android-preferences android-theme