2013-12-18 21 views
1

這裏是我的情況 假設我有那些活動 甲 - >乙 - 「ç - > d返回回跳過一個活動的Android onbackpressed

我要回來,當一個在用戶點擊後退按鈕,當他在D ,但我也想回到B時,當用戶點擊後退按鈕C

當我從B前往C時,我認爲調用完成,但在這種情況下,我可以如果我點擊後面的C,我不會返回到B

我該如何解決這個問題,而不需要致電onBackPressed兩項活動?

感謝

+0

http://stackoverflow.com/questions/10202903/skip-going-back-to-direct-parent-activity-when-pressed-back –

回答

0

當你開始每個活動,您將需要使用

startActivityForResult() 

再有國旗說誰被停止中傳回的系統。因此,活動d:

timeToEnd() { 
    setResult(RESULT_D_CLOSING); 
    finish(); 
} 

然後在A,C,d

onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch(resultCode) 
    case RESULT_D_CLOSING: 
     // Close on upwards 
     setResult(RESULT_D_CLOSING); 
     finish(); 
    case .... 
     // You get the idea 
    } 
} 
0

您是否嘗試過在你的意圖使用FLAG_ACTIVITY_CLEAR_TOP標誌(用於啓動從 「d」, 「A」)?

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

如果設置,以及正在啓動的活動在目前的任務已經運行,然後,而不是推出該活動的一個新的實例,都在它上面的其他活動的將被關閉,這意圖將作爲新的意圖傳遞給(現在在頂部)舊活動。

+0

這樣做的工作嗎? –

0

您有2個選項。您可以從startActivityForResult開始活動,然後每個活動的onBackPressed傳遞一個標誌,告訴活動退出開放。

另一種選擇是在同一活動中將A,B,C,D作爲片段放到背面堆疊上,然後打開它們,然後您可以通過編程方式循環訪問堆棧,以查看您想要的內容去做。