Android onKeyDown没有捕获Dpad中心并输入按键

use*_*565 3 events user-interface android handler onkeydown

在onKeyDown的基本活动中进行简单的覆盖,我能够捕获除了enter和dpad中心按钮之外的所有按键(通过断点确定).我不知道为什么 - 有人可以对这种情况有所了解吗?

编辑:快速更新 - 它确实捕获Dpad中心并输入关键LONG按下,但仍然不是正常的按下.

tag*_*mer 9

我知道这个问题已经很老了,但是如果一些绝望的编码器迷路了,我会发布我的答案.

我的USB键盘遇到了类似的问题.当除了EditText框以外的任何其他内容时,ENTER键从未被onKeyUp或onKeyDown捕获.

如果你使用dispatchKeyEvent(),你会在它到达窗口之前获得KeyEvent,在我的情况下,我肯定会得到ENTER键.但谨慎,该事件被调用两次,一次用于按键,一次用于按键.

这里有一个示例代码:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

    System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());

    return true;
}
Run Code Online (Sandbox Code Playgroud)


Ero*_*rol 1

您阅读了文档吗?

软件键盘中的按键通常不会触发此侦听器,尽管有些人可能会在某些情况下选择这样做。不要依靠它来捕获软件按键。

另外,您捕获密钥的方式非常模糊。您甚至没有使用以下命令检查发送给您的 keyCode:

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { return false; }

您可以从视图处理 onKey:

public boolean onKey(View v, int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_ENTER:
            /* This is a sample for handling the Enter button */
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

请记住实现 OnKeyListener 并设置您的侦听器

viewname.setOnKeyListener(this);
Run Code Online (Sandbox Code Playgroud)