2016-07-23 125 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.