在扩展AlertDialog并重写dispatchKeyEvent方法后没有用

时间:2011-06-11 09:59:44

标签: android alertdialog

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

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

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH)
        return true;
    return super.dispatchKeyEvent(event);
}

1 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。不是扩展AlertDialog而是扩展Builder。在构造函数中编写以下代码:

   setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode,
                KeyEvent event) {
            if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH)
                return true;
            return false;
        }

    });

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