Android在backstack中的另一个活动之前启动一个新活动,并清除旧活动之上的活动

时间:2016-06-21 10:31:31

标签: android android-intent android-activity back-stack android-navigation

我遇到了Activity backstack问题。假设我的后台包含5个活动:活动A,活动B,活动C,活动D和活动E.在某些时候,我希望用户在活动E上按下后退按钮时转到另一个活动G.活动G需要放在活动B之后,所以我希望活动C和活动D从后台堆栈中删除(否则用户将转到活动D)。

Current situation A --> B --> C --> D --> E

Preferred situation A --> B --> G

现在我明白,当活动G出现在后台时,我可以使用FLAG_ACTIVITY_CLEAR_TOP。但活动不是。此外,我不想使用FLAG_ACTIVITY_NEW_TASK,因为活动A和B也将消失。

另一种方法是放

android:noHistory="true"
活动C和D的清单中的

,但每当用户从活动C或D中按下后退按钮时,这将使用户返回活动B.

谁能指出我正确的方向?

2 个答案:

答案 0 :(得分:2)

You can try below

C ----startActivityForResult----------> D ---startActivityForResult--> E

handle onActivityResult with result accordingly to finish Activities, make sure its chained action calls

答案 1 :(得分:1)

当您从 C-> D 开始活动时,您需要完成();

意图意图=新意图(C.this,D.class);

<强> startActivity(意向);

完成();

对于 D-&gt; G ,这种方式是可行的。