2011-03-28 65 views
2

我需要一些關於活動堆棧的幫助。如何顯示活動堆棧中的活動

在我的應用程序,我有6個屏幕的用戶從

1-->2-->3-->4--> 

導航,當我去4的屏幕我有取消按鈕

時,該按鈕用戶點擊它應該去第二個屏幕和

當用戶點擊小鍵盤上的返回按鈕時,它應該去1屏幕已經在活動堆棧如何做到這一點。

請給我一個例子。

+0

我已編輯馬答案。 FLAG_ACTIVITY_SINGLE_TOP會帶您進入第一個已經在活動堆棧中的屏幕。 – pawelzieba 2011-03-28 09:52:28

回答

0

使用onBackPressed()和意圖機制來啓動或重新顯示必要的活動。

+0

謝謝Madimir,但onBackPressed()在android-1.5中不可用。 – 2011-03-28 07:30:09

+0

然後使用onKeyDown()。 – 2011-03-28 07:41:51

+0

但我想顯示1個已經在活動堆棧中的屏幕。 – 2011-03-28 09:33:23

0

//對於返回BTN屏幕上的4

Onclick(View v) 
{ 
if(v==Backbtn) 
{ 
finish(); 
startActivity(new intent(this,SecondActivity.class)); 
} 
} 

//爲返回鍵按返回到1個屏幕

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      startActivity(new intent(this,FirstActivity.class)); 
        return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

您的代碼將啓動SecondActivity on Third和First on Fourth活動。按下後退按鈕將分別顯示第三和第四個活動。 – pawelzieba 2011-03-28 09:05:27

3

只需使用FLAG_ACTIVITY_CLEAR_TOP

當用戶點擊按鈕:

Intent intent = new Intent(ActivityD.this, ActivityB.class); 
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

當用戶按下回:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent intent = new Intent(ActivityD.this, ActivityA.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     startActivity(intent); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

此代碼將用戶帶到第一活性。活動因爲FLAG_ACTIVITY_SINGLE_TOP不會被重建。當活動已經在回棧時,將會調用onNewIntent(),您可以在其中使用來自intent的數據。

如果您希望爲您的活動默認使用這些行爲,請將這些標記放置到Android清單中以放入活動聲明中。

+0

出於好奇,這是從1.5?我不知道那個標誌,所以謝謝:) – Viren 2011-03-28 09:04:08

+1

這個標誌是可用的,因爲API 1. :) – pawelzieba 2011-03-28 09:07:54