2016-12-01 27 views
0

我有一個初始活動O和一個活動A,其中我可以選擇去活動A1,A2,A3並且例如在每個活動中填寫表單。所以,我沿着這條道路:如何在Android中管理活動實例

O> A> A1> A> A2> A> A3

雖然我在A3我想按後退按鈕,再去O但我必須從A的每個實例傳遞(假設我用finish()no history在清單的A1,A2,A3所以他們將不會出現在堆棧)

我怎麼可以聲明A只會有一個實例(最後一個)在堆棧中,這樣如果我按下按鈕tw冰我會再次去O

+0

每次活動「A」出現都是新實例?爲什麼不只有一個活動實例'A'並從其他活動中回到它呢? – Bryan

+0

這是默認行爲。我怎樣才能讓它成爲單一實例?這就是問題... –

+0

爲什麼你需要創建A的多個實例?你是否正在實施註銷功能? – Dilip

回答

3
@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this,O.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    finish(); 
} 
+2

雖然這個答案很好,但請嘗試解釋代碼的作用,以幫助其他/新用戶瞭解它的工作原理。大多數Android初學者都有理解「活動」和「任務」堆棧的問題。 – Bonatti

0

更改活動AlaunchModesingleTop。由於它在文檔中指出:

如果活動的一個實例,在目標 任務的頂部已經存在,該系統的路線通過對 調用其onNewIntent()方法,而不是意圖到該實例比創建 活動的新實例。現在

,而不是從A -> A1 -> A去,你可以finish()活動A1(或使用up button),這將返回到活動A的實例。