Intent intent = new Intent(getApplicationContext(),
yourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
再看看这个问题 Activity with Flag FLAG_ACTIVITY_CLEAR_TOP (android) 编辑:我以为你想从D移动到你的主活动,并想从堆栈中删除所有活动 你的堆栈就像家庭活动,A,B,C,D,所以我给你这个解决方案,因为这将删除所有的活动在堆栈上的顶部您的家庭活动。 如果要在转到D时清除堆栈,可以使用FLAG_ACTIVITY_TASK_ON_HOME或FLAG_ACTIVITY_CLEAR_TASK 但这两个都是针对api级别11。
6条答案
按热度按时间0ve6wy6x1#
使用
FLAG_ACTIVITY_CLEAR_TOP
这将解决您的问题从Android documentation:
如果已设置,并且正在启动的Activity已在当前任务中运行,则不会启动该Activity的新示例,而是关闭其上的所有其他Activity,并且此Intent将作为新Intent交付给(现在位于顶部的)旧Activity。
例如,考虑由以下活动组成的任务:A、B、C、D。如果D使用解析为Activity B的组件的Intent调用startActivity(),则C和D将完成,并且B接收给定的Intent,从而导致堆栈现在为:A,B。
像这样使用它
再看看这个问题
Activity with Flag FLAG_ACTIVITY_CLEAR_TOP (android)
编辑:我以为你想从D移动到你的主活动,并想从堆栈中删除所有活动
你的堆栈就像家庭活动,A,B,C,D,所以我给你这个解决方案,因为这将删除所有的活动在堆栈上的顶部您的家庭活动。
如果要在转到D时清除堆栈,可以使用
FLAG_ACTIVITY_TASK_ON_HOME
或FLAG_ACTIVITY_CLEAR_TASK
但这两个都是针对api级别11。
7vux5j2d2#
正确的答案对我来说也很有趣,但我可以提供一个解决方案:例如,从O开始活动A:O-〉A-〉B-〉C-〉D。在活动O上,您可以放入Android清单
android:launchMode="singleTop"
。然后,当数据正常时,您可以使用标志“FLAG_ACTIVITY_CLEAR_TOP”启动活动O-它将从堆栈A、B、C中删除,并将在O中调用方法onNewIntent (Intent intent)
http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent),您可以在其中启动活动D。irtuqstp3#
您可以使用startActivityForResult启动活动,并从例如活动D调用setResult,在C活动中,您可以侦听活动结果,以及与此结果相关的是否完成活动,或从C活动调用setResalt ...
svgewumm4#
当你想把D活动移到那里时,你需要检查你的条件,如果你的条件得到满足,那么你需要进入你的下一个活动(即D)。在这种情况下,你需要使用下面的代码。
假设In在backpress上需要使用finish().来向后移动,即C -〉B -〉A。
mzillmmw5#
请尝试对这段代码进行一些修改:
1tuwyuhd6#
尝试查找活动的公共方法startActivity(Intent i)和finish()here
在用法上,它应该如下所示。
希望这对你有帮助:D