我真的不明白所有这些标志是如何工作的,因为我完全按照文档所说的去做,但它并没有解决我的问题。我的 Activity 是这样启动的:(第一)Activity A -> Activity B -> (第二)Activity A。如果我按下按钮,它会回到 Activity B -> Activity A -> Exit application。现在我想要从 Activity B 声明的第二个 Activity A,当按下返回时,它将跳过 Activity B 和第一个 Activity A,并立即退出应用程序。这是代码:
从 A 到 B:
TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, B.class);
parentActivity.startChildActivity("BFromA", detailIntent);
从 B 到 A:
TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, A.class);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
parentActivity.startChildActivity("AFromB", detailIntent);
从 B 到 A,我添加了标志 FLAG_ACTIVITY_CLEAR_TOP
。但它没有清除任何东西。我按回去的时候,还是去了Activity B,然后又去了A。我做错了什么?
而且似乎所有标志都不起作用。从 A 到 B,我输入:
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
它应该防止 B 被放入 Activity 堆栈。但事实并非如此。从第二个activity A开始,按back还是回到B。
现在我应该怎么做才能退出应用程序而不是从第二个 Activity A 返回到 B。
编辑:我忘了说。从 B 到 A,如果我调用 finish() 来终止 Activity B,那么从第二个 Activity A,当按下返回时,它会返回到第一个 Activity A。为什么 Activity A 在这里有 2 个实例,尽管我设置了 FLAG_ACTIVITY_CLEAR_TOP?真奇怪。
最佳答案
读一遍,flag_activity_clear_top 的使用不再有问题
这里简单说明一下 Flag_Activity_Clear_Top 的用法。
一个正确使用的衬里配方:
它总是清除调用 Activity 和被调用 Activity 之间的中间 Activity (如果有的话)。
这是一个 Activity 流程:
Activity A -> Activity B -> Activity C(使用 flag activity clear top to go to D) ->Activity D
在上面的序列中,当我们到达 D 时,如果我们向后按,我们将得到 Activity C->Activity B-> Activity A ,因为两者之间没有中间 Activity Activity C 和 Activity D
一些开发者的迷思是——
在使用 C 中的标志 Activity clear top 到达 Activity D 后,他们期望在 D 中按下后退键时会将他们带到应用程序之外。这永远不会发生。
Flag_Activity_Clear_Top 始终清除两个 Activity 之间的中间 Activity (如果有的话)
关于Android FLAG_ACTIVITY_CLEAR_TOP 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534079/