2

我在我的应用程序中显示了一个不可取消的对话框,但如果用户按下搜索按钮,它就会被取消。我试图覆盖 onSearchRequested 和 onKeyDown,但它没有帮助。有什么建议吗?

4

2 回答 2

3

我也遇到了这个问题,Jamasan 的解决方案对我不起作用。我改为将以下代码添加到我的自定义对话框类(扩展对话框)中:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_SEARCH) {
        return true;
    } else {
        return false;
    }
}

keyCode 和 KeyEvent.KEYCODE_SEARCH 都是 int。onKeyDown 的文档说

如果您处理了该事件,则返回 true。如果您想允许下一个接收者处理事件,请返回 false。

为我工作。

于 2011-03-28T15:57:39.943 回答
0

覆盖 Activity 的 onKeyDown 事件,并检查 KEYCODE_SEARCH 是否返回 false

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    char c = (char) event.getUnicodeChar();

    if (c == KeyEvent.KEYCODE_SEARCH) {
        return false;
    } else {
        return super.onKeyDown(keyCode, event);
    }
}

返回 false 只会阻止该按键(好像它没有发生一样)。否则,运行 super.onKeyDown(..) 只会定期处理它。

祝你好运。

于 2011-03-04T23:53:56.757 回答