2012-02-11 46 views
0

我有3個活動A,B & C我希望活動完成,如果我按活動中的AlertDialog上的ESCAPE按鈕

我在列表中顯示活動A中的一些視頻鏈接。如果用戶點擊一個項目,我加載活動B其中我做了一些用戶的數據驗證,如要求他提供他的登錄信息在AlertDialog。我在這個對話框中提出了兩個按鈕到登錄 & 取消。如果用戶按登錄我驗證他的信息並打開活動C我在哪裏播放他選擇的視頻。但如果用戶按下取消,我光潔度()活性加載活動

這工作正常,如果用戶只通過burrons進行交互。

但是問題出現,當我按我的鍵盤/ d-墊ESCAPE按鈕時AlertDialog是開放的。該對話框消失,但完成()完成(B)。我已覆蓋onKeyDown活動B其中我做了以下。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK 
      || keyCode == KeyEvent.KEYCODE_ESCAPE) { 
     Log.d(TAG, "onKeyDown : calling finish() manually"); 
     finish(); 
     return true; 
    } else 
     return false; 
} 

但是當我按ESCAPE在一個開放的AlertDialog這是行不通的。

我該如何做到這一點?

+0

請確認是否已調用onKeyDown – jeet 2012-02-11 10:50:28

回答

1

捕獲AlertDialog的setOnKeyListener事件,並在其中粘貼下面的代碼。它也將關閉BACK按鈕上的活動:

@Override 

    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE)         
     {   
      yourActivity.finish(); 
      return true; 
     } 
     return false; 
    } 
+0

很好用......非常感謝您 – Aamir 2012-02-11 13:01:15