Android 扩展AlertDialog和重写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)

我想在显示alertDialog时禁用全局搜索键。因此,我扩展该类并重写dispatchKeyEvent方法以捕获关键消息。但当我在AlertDialog窗口中按search键时,它无法捕获key事件。为什么?

以下是新dispatchKeyEvent方法中的代码:

@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;
        }

    });

这可以捕获全局搜索键并将其删除。

我在我的应用程序中尝试过这一点,但效果很好。你能提供你的自定义对话源吗?