2012-04-03 65 views
8

我有一個A類,它通過startActivityForResult向其傳遞Intent來運行活動。在其他班級,讓我說B我得到這個Intent並通過它重新創建活動。我該如何收聽該活動的活動,例如爲結果啓動的活動正在運行,並且用戶按下「返回」按鈕,因此我想要執行一些操作。 我該怎麼做? 先謝謝您。如何將onBackButton偵聽器設置爲活動

我重新創建對象實例的活動不是從Activity類派生的。這只是活動。所以我只反對。有沒有辦法用類的實例做類似的東西,但不是類?

回答

22

你應該覆蓋與條件

setResult(result); //if you want to pass a result to activity A 
finish(); 

某處方法:Activity類的onBackPressed()

1

您可以覆蓋onDestroy並將代碼放在那裏。

另一種可能性(可能更適合您的需求)是覆蓋onBackPressed

+2

如果活動正在被銷燬,例如由於內存不足,系統會不會調用它?我不確定這是什麼OP後。 – 2012-04-03 14:40:51

+0

你有一個觀點,儘管我認爲一般情況下最好遵循活動生命週期,不要拘泥於鍵。 – MByD 2012-04-03 14:43:28

+0

那麼,這取決於要求是什麼。在我的一個應用程序中,我有一個活動,其視圖基於用戶操作而改變。當按下「後退」鍵時,我要麼恢復原始狀態(如果我處於更改狀態)或完成活動。在這種情況下,生命週期不會幫助我。 – 2012-04-03 14:45:17

4

活動中,要採取行動「返回」按鈕,只需覆蓋onKeyDown(或onKeyUp)方法:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //do whatever you need for the hardware 'back' button 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

請記住,如果你想「後退」鍵仍然結束您的活動,那麼你就需要包括前return true;

相關問題