2010-09-01 109 views
21

我正在編寫一個應用程序,它將有兩個活動,當用戶在第二個活動上按下後退按鈕時,會彈出一個對話框,要求用戶確認該操作。那麼我怎麼攔截這個?我真的懷疑這個因爲後臺是操作系統本身的一部分。有沒有人找到解決方法?攔截後退按鈕

+0

認真對待這樣做。這是非標準的Android行爲,可能會惹惱您的用戶。您是否試圖避免丟失未保存的數據? – I82Much 2010-09-01 04:01:04

+0

是的@ @ 82Much! – 2010-09-01 04:23:54

回答

50

在一個活動,你可以只覆蓋

onBackPressed()

編輯:這是API LVL 5+:/ 4和下面你得重寫的onkeydown()

+0

不錯,謝謝@schwiz – 2010-09-01 04:21:16

10

只需重寫活動中的onKeyDown方法並查找後退按鈕即可。返回true以便事件被消耗。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do something here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

+1,我以前做過這件事,它絕對有效,雖然當我使用它時,它是在我理解多個活動的概念之前... – 2010-09-01 03:57:52

+0

//在這裏做點什麼(我正在嘗試爲我測試代碼) 不適合我。而當我按下後退按鈕什麼也沒有發生。 – 2010-09-01 04:08:07

+0

我的錯誤,我沒有叫Toast.show()。 工作代碼。 Thanx @skorulis – 2010-09-01 04:16:52

3

正如schwiz指出的那樣,您需要覆蓋活動類中的onBackPressed()方法(http://developer.android.com/reference/android/app/Activity.html#onBackPressed())。

我只是想補充一點,如果你確實想在某個階段有繼續或訪問標準的回退操作(比如後,顯示一個對話框),那麼您只需撥打super.onBackPressed()ActivityName.super.onBackPressed()從活動的任何地方。