2013-04-11 134 views
0

我有一個FragmentActivity。在其功能,我想區分微分主頁按鈕,按下後退按鈕並啓動新活動

  • 首頁按鈕被按下
  • 後退按鈕按下
  • 啓動一個新的活動(這將導致片段活動的被稱爲)

對於後退按鈕案例,我知道我可以通過使用this.isFinishing() == true來區分它。

但是,如何啓動新的活動案例

我知道也許我可以在啓動新活動之前設置一個標誌,並在函數結束時重置標誌。但是,這對我來說聽起來並不高雅。有沒有更好更強大的方法?

+0

我認爲,一個指針也可以處理'onStop()'。然而,如前所述,這個問題是不明確的 - 你真的想做什麼?例如,「啓動」包括切換到實際已終止然後由系統重新啓動的後臺任務嗎? – 2013-04-11 03:06:21

+0

我認爲你可以覆蓋關鍵事件所以你可以確定家或按回車 – 2013-04-11 03:13:29

+0

你不能覆蓋主鍵按下。 – Karakuri 2013-04-11 03:23:09

回答

0

您可以創建一個單例類,用於跟蹤您的活動何時開始/恢復/暫停/停止。創建一個基類Activity類,它在每個生命週期回調中調用單例。

如果你看一下活動之間轉換時的回調的順序,你應該看到這一點:

Pause Activity A 
Create Activity B 
Start Activity B 
Resume Activity B 
Stop Activity A 

當你的單會從活動A的的onStop()調用,您可以檢查是否有一個呼叫來自另一個Activity的onResume()(顯然屬於您的應用程序)。如果沒有,則知道用戶已更改應用程序或返回主屏幕。

至於後退按鈕,您可以檢查isFinishing(),或覆蓋Activity.onBackPressed()並在那裏做記錄。