2013-05-03 21 views
10

我正在使用onSaveInstanceState()来存储ArrayList成员变量并将其恢复到主活动的onCreate()方法中。这适用于大多数情况下,如旋转屏幕等,但如果我打开一个新的活动,并使用'向上'按钮(而不是后退按钮)导航回主屏幕,似乎创建一个新的主要活动,而不通过状态包在onCreate()使用“向上”按钮在Android中恢复状态

我已经确认,当按下向上按钮时,onDestroy()方法被称为主要活动的原始实例,这对我来说没有意义,因为我希望它恢复现有活动,就好像我已经按下后退按钮而不是创建一个新的。

有没有一种方法可以强制新活动来恢复旧活动或恢复现有活动?

+0

谢谢,我有一个篮球事故这篇文章后,然后忘了,直到我开始重新站上今日项目! :S – archangel 2013-05-09 09:18:18

回答

13

尝试的主要活动的启动模式设置为singleTop,在你的清单:为快速作出回应,

<activity android:name="activityName" android:launchMode="singleTop" ... /> 
+0

的描述中得到,但它并不起作用,这应该意味着当您按下向上按钮时,活动不会被破坏,所以(在这种情况下)不需要savedInstanceState - 当系统破坏你的活动以重新获得一些资源时(在你离开它之后),它将使用sIS包。打开'不保留活动'在ICS +调试设置来模仿 – FunkTheMonk 2013-05-03 08:50:42

+0

谢谢,这没有把戏。 – archangel 2013-05-09 09:14:30

0

你试图使用:

Intent i = new Intent(this, MainScreenActivity.class); 
    i.setFlags(Intent.FLAG_CLEAR_TOP); 
startActivity(i); 
    finish(); 

此代码应要求按下了按钮。

+0

我试过这种方法,虽然我同意它应该从FLAG_CLEAR_TOP – archangel 2013-05-09 09:13:54