Android 扩展AlertDialog和重写dispatchKeyEvent方法后不可用
我想在显示alertDialog时禁用全局搜索键。因此,我扩展该类并重写dispatchKeyEvent方法以捕获关键消息。但当我在AlertDialog窗口中按search键时,它无法捕获key事件。为什么? 以下是新dispatchKeyEvent方法中的代码:Android 扩展AlertDialog和重写dispatchKeyEvent方法后不可用,android,android-alertdialog,Android,Android Alertdialog,我想在显示alertDialog时禁用全局搜索键。因此,我扩展该类并重写dispatchKeyEvent方法以捕获关键消息。但当我在AlertDialog窗口中按search键时,它无法捕获key事件。为什么? 以下是新dispatchKeyEvent方法中的代码: @Override public boolean dispatchKeyEvent(KeyEvent event) { if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH)
return true;
return super.dispatchKeyEvent(event);
}
我找到了解决这个问题的方法。不是扩展AlertDialog,而是扩展生成器。并在构造函数中编写以下代码:
setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH)
return true;
return false;
}
});
这可以捕获全局搜索键并将其删除。我在我的应用程序中尝试过这一点,但效果很好。你能提供你的自定义对话源吗?