我创建了一个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?或者至少保留所有的运行时间实例和状态,当我创建一个新的?
如果我仍然想使用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)来恢复栈中的活动。有没有办法通过使用intent.putExtra()来传递数据。或者当我解散设置活动时,是否有办法设置回调。 – 2013-02-20 21:18:36