我真的不明白所有这些标志是如何工作的,因为我完全按照文档所说的去做,但这并没有解决我的问题。我的活动是这样启动的:(第一个)活动A->活动B->(第二个)活动A。如果我按下按钮,它会返回到活动B->活动A->退出应用程序。现在我想从 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,我添加了 flags FLAG_ACTIVITY_CLEAR_TOP
。但它并没有清除任何东西。当我按回时,它仍然转到活动 B,然后又转到 A。我做错什么了?
似乎没有任何标志在起作用。从A到B,我把:
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
它应该防止 B 被放入活动堆栈。但事实并非如此。从第二个活动A开始,按回时它仍然回到B。
现在我应该怎么做才能退出应用程序而不是从第二个活动 A 回到 B。
编辑:我忘了提。从B到A,如果我调用finish()来杀死活动B,然后从第二个活动A,当按回时,它会回到第一个活动A。为什么活动A在这里有2个实例,尽管我设置了FLAG_ACTIVITY_CLEAR_TOP?真的很奇怪。