1、如果只想阻止“返回鍵”關閉Dialog最簡單的setCancelable(false)
2、最簡單的方法重載Activity的OnKeyDown()方法,捕捉想要屏蔽的按鍵:
public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){ return true; } if (keyCode == KeyEvent.KEYCODE_SEARCH) { return true; } return super.onKeyDown(keyCode, event); }
這方法可用,但是有缺點(你們懂得)。
3、只給相應的Dialog監聽setOnKeyListener(): alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_SEARCH) { return true; } else { return false; //默認返回 false } } }); 這方法改進了上一個方法的缺點,原理與上邊方法一樣。