2010-07-08 45 views
6

我无法使用Intent.FLAG_ACTIVITY_CLEAR_TOP和android:launchMode =“singleInstance”从堆栈弹出所有活动。如何清除堆栈中的所有活动?

在我的应用程序活动A中,启动活动B(通过startActivity),然后启动活动C(通过startActivity)。在活动C上,用户按下菜单项以返回到活动A.当他们到达活动A时,我只需要A在堆栈上,以便如果他们单击后退按钮,他们将返回到主屏幕(桌面)。

这是我目前使用当用户按下一个按钮,返回到A中的代码:项目清单launchMode =“singleInstance”:

Intent i = new Intent(this, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

所有活动都定义为机器人。

虽然我的代码似乎不工作。一旦我回到活动A,如果我点击后退按钮,我会返回到活动C.我误解了如何使用Intent.FLAG_ACTIVITY_CLEAR_TOP?

+0

即使我面临类似的问题。它解决了吗?如果是的话你是怎么做到的? – EnthuDeveloper 2011-12-26 11:22:24

回答

2

我总是发现确保C将被从堆栈中移除的最好方法是在startActivity之后调用finish()以从堆栈中移除C.

尽管事情会按照您预期的方式进行,但文档看起来确实没有发生,因此finish()将确保C被删除。

+0

调用finish()会删除C,但B仍然会在堆栈中。我希望A,B,C全都在堆栈中,直到用户明确要求从C - > A去。 – Richard 2010-07-08 21:52:47

+0

FLAG_ACTIVITY_CLEAR_TOP将摆脱B,但是从我的经验来看(它看起来和你的相似),但它没有得到摆脱C.因此,如果你结合旗帜和使用finish(),你应该得到你想要的。 – 2010-07-09 06:05:25