2014-10-19 145 views
0

我有這樣的活動序列:正確恢復活動

A =>B =>C =>D =>E

在ButtonClick在E活性,我恢復C。在點擊back按鈕C後,它會返回到E而不是B

我想恢復C活動後有C =>B =>Aback按鈕點擊序列。

我該怎麼做到這一點?

回答

2

開始活動C在意圖中提供FLAG_ACTIVITY_CLEAR_TOP。在關閉頂部C的所有活動後,C活動將開始。

Intent ci = new Intent(this,C.class); 
ci.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(ci); 

標誌開始C時使用:

FLAG_ACTIVITY_CLEAR_TOP: A - B - C - D - EA - B - C

FLAG_ACTIVITY_REORDER_TO_FRONT : A - B - C - D - EA - B - D - E - C

+0

I w因爲使用'ReorderToFront'。我會嘗試其他人並回復。 – arsena 2014-10-19 10:55:45

+0

好的,我認爲'ClearTop'就是我需要的。但是我在使用它時會丟失數據。 什麼是最好的方式來存儲數據'onPause'並檢索'onResume'? – arsena 2014-10-19 11:20:25

+0

使用'ClearTop'並將'LaunchMode'添加到'SingleTop',現在一切正常。謝謝! – arsena 2014-10-19 11:44:40

0

onBackPressed()方法定義按下後退按鈕時發生的操作。所以,基本上,如果您完成onBackPressed()中的活動,則活動將從活動堆棧中移除。您可以通過onBackPressed()從Activity C中顯式調用Activity B。

public void onBackPressed() { 

super.onBackPressed(); 
Intent i=new Intent(this,B.class) 
startActivity(i); 

} 

同樣,在A.從B和完成啓動A

2

所有的活動,只是做回按鈕點擊以下 -

由C -

backButtonC.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(C.this, B.class); 
      //extras 
      C.this.startActivity(intent); 
     } 
    }); 

從B -

backButtonB.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(B.this, A.class); 
      //extras 
      B.this.startActivity(intent); 
     } 
    });