2014-04-08 32 views
21

我正在處理的Android應用程序設計要求「向上」按鈕的行爲方式與「返回」按鈕的行爲方式相同,但我是不知道如何做到這一點。使「向上」按鈕的行爲與Android上的「返回」按鈕相同

我知道android:parentActivityName必須指定爲「上」按鈕才能在活動中可見,但指定固定的父活動對於活動並不真正有意義。設想一下活動A,B和C的場景:

  1. 啓動到活動A中,它包含兩個按鈕:分別將您帶到活動B和C。
  2. 點擊活動B的按鈕。
  3. 過渡到活動B.它包含兩個按鈕:每個按鈕分別帶您到活動A和C.
  4. 點擊的活動按鈕C.
  5. 過渡到活動C.
  6. 點擊「向上」按鈕,你應該採取活動B.
  7. 在活動B:挖掘按鈕活動A.
  8. 過渡到活動A.
  9. 點擊「向上」按鈕,你應該採取活動B.
  10. 在活動b。點擊「向上」按鈕,你應該採取活動A.
  11. 在活動A現在:輕按按鈕活動C.
  12. 過渡到活動C.
  13. 點擊「向上」按鈕,你應該採取活動答:

如果我爲每個活動指定android:parentActivityName,它可能是有意義的有B和C的父活動是A,但是這意味着每次我們打的「向上」從活動B或C鍵,我們着手於活動A(並不總是會發生什麼)。

有沒有人有這種類型的經驗?

回答

41

從所有三個你的活動添加以下

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
    } 

    return(super.onOptionsItemSelected(item)); 
} 

當您按您的應用程序向上按鈕,它會調用onOptionsItemSelectedandroid.R.id.home的ID正好趕上這種情況下,和手動調用onBackPressed()

+0

那非常棒!謝謝! – JasonWyatt

+0

你也可以考慮創建一個'BaseActivity'(其中'ActivityA','ActivityB'和'ActivityC'都會擴展),那麼你只需要將上面的方法放在你的'BaseActivity'類中。這將不會導致代碼重複和維護。 –

+0

簡單而有效,謝謝 – GONeale