2016-11-07 55 views
2

我正在用多個屏幕創建一個應用程序,用戶將不得不瀏覽。具體而言,我目前正在對一組活動必須聯繫在一起如下:按BACK按鈕時返回到正確的活動狀態?

  • 主要活動 - >點擊一個按鈕導致「CreateCharacterActivity」 - >點擊一個按鈕導致「CharacterMainActivity」
  • 「CharacterMainActivity」上的BACK按鈕應該返回MainActivity,而不再次顯示CreateCharacterActivity。
  • 此行爲應該與應用程序的其他區域類似,但它應該恢復BACK按鈕導致的活動在暫停之前處於的狀態。

所以爲了簡化,我想這樣。

  • 活性A - >活動B - >活動Ç
  • BACK按鈕使活性C返回到活動A不經過活動B.去

我試圖這樣做:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    Intent intent = new Intent(this, MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 

但是這只是調用一個MainActivity的新實例。當我在MainActivity實例上按BACK時,它將我帶回CharacterMainActivity。

我該如何做到這一點?我假設它涉及訪問活動堆棧?

回答

4

當您從活動B移動到活動C時,請在活動C上同時致電startActivity,同時致電finish()。這將從任務堆棧中移除活動B.

+0

謝謝!我不知道爲什麼我之前沒有想到... –

+0

如果我在活動A中有一個對象的引用,然後啓動活動B並將該對象作爲Parcelable傳遞,然後在該活動中修改它並按BACK返回到活動A,A將對該對象的引用修改爲它在B中的位置嗎? –

0

您可以開始結果的子活動,然後使用相同的請求代碼結束子活動。

啓動子活動:

startActivityForResult (Intent intent, int requestCode)

用於完成所有的子活動

finishActivity (int requestCode)

相關問題