如何在启动属于另一个堆栈的另一个活动时清除当前活动堆栈

时间:2016-07-23 06:29:16

标签: android activity-stack

例如:开始B,B开始C,A和C属于' Hello' -stack,B属于' World' -stack,当用户按下后退按钮时在活动C中,它将返回A. 注1:B表示很多活动,而不仅仅是一项活动, 如A开始B1,B1开始B2,B2开始B3 ......,Bn开始C. 注2:我需要Bs保持堆叠状态,直到C启动,用户按下 回到B3,它应该回到b2。 enter image description here

我实际上已经通过使用startActivityForResult实现了这个需求,我只是想知道是否有任何方法使用stack来实现它。

3 个答案:

答案 0 :(得分:0)

从B开始活动C时,只需调用finish()。 然后在活动C中覆盖onBackPressed()。并添加代码以启动活动A.

答案 1 :(得分:0)

从活动A到活动B时,请按以下步骤操作:

 Intent i=new Intent(ActivityA.this,ActivityB.class);
 startActivity(i);

因为你想从B打开C但不希望B在堆叠中,所以请按以下步骤操作:

 Intent i=new Intent(ActivityB.this,ActivityC.class);
 startActivity(i);
 ActivityB.this.finish();

当在C上反向按下时,你会得到A而不是B。

答案 2 :(得分:0)

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 要么 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 适合我。