除第一个活动外,清除活动堆栈

时间:2016-08-10 16:42:18

标签: android

这是我想要完成的活动流程:

A > B > C > (完成B& C)>的 d

用户可以从C导航回B.但是一旦我开始D,用户只能返回A.

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以尝试如下。

使用startActivityForResult开始每项活动,并从活动 D 发送一个值。检查onActivityResult活动方法 B C 中的值。如果您找到该值,则完成活动并将结果发送到其父活动,但活动 A 除外。

答案 1 :(得分:0)

活动A可以关闭并重新打开吗?如果是这样,那么你可以这样做:

<强> A-&GT;乙

Intent intent = new Intent(context, BActivity.class);
startActivity(intent);

<强> B-&以及c

Intent intent = new Intent(context, CActivity.class);
startActivity(intent);

<强> C-&GT; d

Intent intent = new Intent(context, DActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

<强> D-&gt;一种

堆栈已清除,因此您必须覆盖onBackPressed()

@Override
public void onBackPressed() {
    Intent intent = new Intent(context, AActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}