2016-07-23 117 views
0

例如:一个开始B,B开始C,A和C属于'Hello'堆栈,而B属于'World'堆栈,当用户在活动C中按下后退按钮时,它将返回到A. 注意1:B意味着很多活动,而不仅仅是一个活动, 像A开始B1,B1开始B2,B2开始B3 .... Bn开始注意2:我需要B继续堆栈,直到C启动,当用户在B3中按 时,它应该返回到b2。 enter image description here如何清除当前活动堆栈当启动另一个活动属于另一个堆栈

我实际上已经通过使用startActivityForResult实现了这个需求,我只是想知道是否有任何方式使用堆栈来实现这一点。

+0

http://stackoverflow.com/questions/19798737/android-intent-flag-to-destroy-activity-and-start-new-one – Mehul

回答

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); 适合我。

0

只需调用finish()当您从B. 开始活动C,然后覆盖活动C. onBackPressed()和代码添加到启动活动A.

+0

对不起,我没有清楚地描述我的问题..有超过在'世界'堆栈中的一个活动在B的顶部。 –

+0

清楚地说明活动流程 –

+0

是的。每当你调用一个新的活动,只需在startActivity()之后调用finish()就可以销毁当前活动。在Activity C上,覆盖onBackPressed()方法。在该方法中,开始活动A .. –

0

当从活动A到活动B,如去如下:

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

而当你想打开从B C,但不希望B到在堆栈中,所以下面做:所以时自动backpr

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

在C上,你将得到A而不是B.