1

我有一个物理键盘连接到我的 android 设备。我有一个带有两个按钮的应用程序,以下两个函数处理 KeyEvent:

public boolean onKeyUp(int keyCode, KeyEvent event) {
    if(state==State.INI){
        char unicodeChar = (char)event.getUnicodeChar();
        Log.d("CHAR", "UP: "+Character.toString(unicodeChar)+" - "+Integer.toString(keyCode));
    }
    return true;
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(state==State.INI){
        char unicodeChar = (char)event.getUnicodeChar();
        Log.d("CHAR", "DOWN: "+Character.toString(unicodeChar)+" - "+Integer.toString(keyCode));
    }
    return true;
}

但即使它处理 ENTER 键也不会阻止它由系统处理:s 例如,我将 return true 更改为 false 并且我可以使用按钮之间的箭头键导航,因此使用 return true 它几乎可以工作除了 ENTER 之外的每个键:s

4

1 回答 1

2

解决方法:

public boolean dispatchKeyEvent(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        Log.d("CHAR","YOU CLICKED ENTER KEY");
            return false;
    }
    return super.dispatchKeyEvent(e);
};
于 2013-03-28T13:53:40.343 回答