2011-02-28 111 views
0

可能重複:
Removing an activity from the history stack的Android活動堆棧問題

我已經爲Android棧和堆推過程的1個問題是以下所列各項:

A-> C-> C-> C-> C-> D

C會重複調用自己,直到某些條件滿足。

我使用下面的代碼開始活動。

Intent intent = new Intent(this,MyActivity.class); startActivity(intent);

我的問題是活動D開始後,我想馬上回到活動B,而不是按回退按鈕返回活動C.

A-> B-> C-> C-> C-> C-> d -----> A-> B

我知道我應該使用意圖setFlags,但我不知道使用什麼 http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/

有什麼建議嗎?

在此先感謝。

編輯: 對於這種情況活動C是問題頁面,活動D是結果頁面。 A-> B->問題1->問題2->問題3 - >結果。

我需要保留歷史堆棧b4活動D,這將允許用戶更改答案。

回答

1

for activity:c: try intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

+0

嗨,感謝您的建議。我編輯了我的問題。我需要保持歷史b4它達到活動D. – Dylan 2011-02-28 17:37:11

+0

嗨,謝謝你的建議。我編輯了我的問題。我需要保持歷史b4達到活動D. – Dylan 2011-02-28 17:37:12

+0

任何其他建議? – Dylan 2011-02-28 17:37:58

1

嘗試Intent.FLAG_ACTIVITY_CLEAR_TOP每次調用startActivity()的意圖爲B.

時間這將帶來B到頂部,彈出那名在它上面的所有活動。

+0

我需要設置標誌在A-> B或B-> C? – Dylan 2011-02-28 17:48:20

+0

我設置了Intent.FLAG_ACTIVITY_CLEAR_TOP,當活動B開始活動C但沒有運氣時,當我在活動D處按下後退按鈕時,我仍然回到活動C中。 – Dylan 2011-02-28 17:48:20

+0

當您重新啓動B後設置它,你的C。 – 2011-02-28 17:51:27

1
@Override 
public void onBackPressed() { 
Intent i = new Intent(ACTIVITY_D, ACTIVITY_B);  
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
    startActivity(i); 
    return; 
} 

重寫onBackPressed()並設置FLAG_ACTIVITY_CLEAR_TOP標誌。將上面的功能放在您的活動D下。