我真的不明白所有这些标志是如何工作的,因为我完全按照文档所说的操作,并且它没有解决我的问题。我的活动是这样启动的:(第一)活动 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,我添加了标志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?真的很奇怪。