Android 单击“搜索”按钮时取消不可取消的对话框

Android 单击“搜索”按钮时取消不可取消的对话框,android,android-activity,lifetime,Android,Android Activity,Lifetime,我在应用程序中显示了一个不可取消的对话框,但是如果用户按下搜索按钮,它就会被取消。我已尝试覆盖onSearchRequested和onKeyDown,但没有帮助。有什么建议吗?覆盖活动的onKeyDown事件,并检查KEYCODE\u SEARCH以返回false @Override public boolean onKeyDown(int keyCode, KeyEvent event) { char c = (char) event.getUnicodeChar(); i

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

覆盖活动的onKeyDown事件,并检查KEYCODE\u 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(..)只是定期处理它


祝你好运。

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

keyCode和KeyEvent.keyCode\u搜索都是int。onKeyDown的文档说

如果处理了该事件,则返回true。 如果您希望允许事件 由下一个接收者处理,返回 错

对我有用

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