2011-11-16 30 views
2

我有實現onBackPressed(),它在我的活動中沒有彈出警告對話框時起作用。但是當我的活動彈出一個對話框時,onBackPressed()永遠不會被調用。當我的活動彈出一個對話框時,我的活動的onBackPressed()不會被調用

public void onBackPressed() { 
     super.onBackPressed(); 
// more implementation. 
} 

當彈出一個對話框時,如何檢測返回鍵是否被用戶按下?

謝謝。

+0

改爲嘗試在警報對話框上給出後退按鈕,它將更容易實現和檢測 –

+0

更易於實現和檢測什麼? – michael

+0

在警報對話框中實現了「OK」或「BACK」按鈕,y正好你想檢測到後按? –

回答

0

這是因爲您的活動沒有關注這一點。你必須在彈出的對話框中添加一個按鈕監聽器。

2

像這樣的東西,應該做的工作。

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     yourpopup.dismiss(); // or whatever you want todo here 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+0

android提供onBackPressed()相同 –

2

那麼,在這種情況下Dialog#onBackPressed()將被調用,這是預期的行爲。

+0

我需要子類AlertDialog來實現這個? – michael

+1

AlertDialogs是對話框,所以是的,如果你想要一個特定的行爲,你應該子類AlertDialog。如果在BACK上可取消,則默認實現調用cancel()。 –

0

您還可以創建自己的自定義彈出消息類,該類可以擴展AlertDialog.Builder,並使用Java接口在彈出窗口(即是/否,提交/取消按鈕)上處理用戶選擇。

這就是我所做的,所以我可以處理警告和錯誤,其他警報使用我自己的自定義警報彈出消息窗口。

我不需要在自定義彈出消息類中處理任何特殊的事情來處理被按下的後退按鈕。

但是,我確實處理了在調用我的自定義彈出消息類的活動類中按下的後退按鈕。

/** 
    * onKeyDown method 
    * 
    * Executes code depending on what keyCode is pressed. 
    * 
    * @param int keyCode 
    * @param KeyEvent 
    *   event KeyEvent object 
    * 
    * @return true if the code completes execution, false otherwise 
    * 
    */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    super.onKeyDown(keyCode, event); 
    switch (keyCode) { 
    case KeyEvent.KEYCODE_BACK: 
     //handle the back-key press here 

    default: 
     return false; 
    } 
    }// end onKeyDown 
相關問題