onKeyUp 不处理来自硬键盘的 Enter
onKeyUp doesn't handle Enter from hard keyboard
我有一个 activity 上面有一组按钮,它类似于 NumPad 键盘。
我的目的: 在小(硬)“usb NumPad 键盘”的帮助下为输入数据做一些终端——所以界面看起来像 NumPad——只是一组按钮。
我想处理所有键盘事件来处理我需要做的事情(每个按钮都有我自己的功能)。重写函数 onKeyUp
和 onKeyDown
– 除了处理 Enter 键外,它们完成了我需要的所有工作。在这两个函数中,它根本不是我所看到的事件。
On Enter activity 打开菜单,所以 Enter 是一些特殊的功能——不是对我来说,而是对系统。
我在这里看到的所有主题(如何处理“Enter”)都是关于软键盘或EditView的。我的 activity 上没有任何可编辑的内容,我只是想捕捉 Enter 事件,或者可能 link 使用 activity 上的一些按钮进行输入。
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
Toast.makeText(this,keyCode.toString(),Toast.LENGTH_SHORT).show()
val res: Int = when (keyCode) {
KeyEvent.KEYCODE_NUMPAD_0 -> 0
KeyEvent.KEYCODE_0 -> 0
KeyEvent.KEYCODE_NUMPAD_1 -> 1
KeyEvent.KEYCODE_1 -> 1
KeyEvent.KEYCODE_DPAD_DOWN_LEFT -> 1
KeyEvent.KEYCODE_NUMPAD_DOT -> 10
KeyEvent.KEYCODE_NUM_LOCK -> 11
KeyEvent.KEYCODE_NUMPAD_ENTER -> 16 //never happens
else -> -1
}
if (res>=0) doAction(res)
return if (res == -1) super.onKeyUp(keyCode, event)
else true
}
使用dispatchKeyEvent
处理输入:
override fun dispatchKeyEvent(event:KeyEvent):Boolean {
if (event.getAction() === KeyEvent.ACTION_UP)
{
Toast.makeText(this,event.getKeyCode().toString(),Toast.LENGTH_SHORT).show()
return true
}
}
我有一个 activity 上面有一组按钮,它类似于 NumPad 键盘。
我的目的: 在小(硬)“usb NumPad 键盘”的帮助下为输入数据做一些终端——所以界面看起来像 NumPad——只是一组按钮。
我想处理所有键盘事件来处理我需要做的事情(每个按钮都有我自己的功能)。重写函数 onKeyUp
和 onKeyDown
– 除了处理 Enter 键外,它们完成了我需要的所有工作。在这两个函数中,它根本不是我所看到的事件。
On Enter activity 打开菜单,所以 Enter 是一些特殊的功能——不是对我来说,而是对系统。
我在这里看到的所有主题(如何处理“Enter”)都是关于软键盘或EditView的。我的 activity 上没有任何可编辑的内容,我只是想捕捉 Enter 事件,或者可能 link 使用 activity 上的一些按钮进行输入。
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
Toast.makeText(this,keyCode.toString(),Toast.LENGTH_SHORT).show()
val res: Int = when (keyCode) {
KeyEvent.KEYCODE_NUMPAD_0 -> 0
KeyEvent.KEYCODE_0 -> 0
KeyEvent.KEYCODE_NUMPAD_1 -> 1
KeyEvent.KEYCODE_1 -> 1
KeyEvent.KEYCODE_DPAD_DOWN_LEFT -> 1
KeyEvent.KEYCODE_NUMPAD_DOT -> 10
KeyEvent.KEYCODE_NUM_LOCK -> 11
KeyEvent.KEYCODE_NUMPAD_ENTER -> 16 //never happens
else -> -1
}
if (res>=0) doAction(res)
return if (res == -1) super.onKeyUp(keyCode, event)
else true
}
使用dispatchKeyEvent
处理输入:
override fun dispatchKeyEvent(event:KeyEvent):Boolean {
if (event.getAction() === KeyEvent.ACTION_UP)
{
Toast.makeText(this,event.getKeyCode().toString(),Toast.LENGTH_SHORT).show()
return true
}
}