【问题标题】:onKeyUp doesn't handle Enter from hard keyboardonKeyUp 不处理来自硬键盘的 Enter
【发布时间】:2019-10-09 11:46:29
【问题描述】:

我有一个带有一组按钮的 Activity,它类似于 NumPad 键盘。

我的目的:在小(硬)“usb NumPad 键盘”的帮助下做一些输入数据的终端——所以界面看起来像 NumPad——只是一组按钮。

我想处理所有键盘事件来处理我需要做的事情(每个按钮我自己的功能)。覆盖函数 onKeyUponKeyDown - 除了处理 Enter 键之外,它们可以满足我的所有需求。正如我所见,在这两个函数中,它根本不是一个事件。 在 Enter 活动打开菜单,因此 Enter 是一些特殊功能——不是为我,而是为系统。

我在这里看到的所有主题(如何处理“Enter”)都是关于软键盘或 EditView。我的活动中没有任何可编辑的内容,我只想捕捉 Enter 事件,或者可能将 Enter 与活动中的某些按钮链接。

    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
}

【问题讨论】:

  • 是的。但 onKeyUp 不处理它。它甚至可以处理 NumLock 但不能处理 Enter。
  • 添加到发布 onKeyUp
  • 如果你使用KeyEvent.KEYCODE_ENTER会怎样?
  • 我可以做到,但这不是问题。问题是 - 在 Enter 上 - onKeyUp 甚至没有在调试时调用。

标签: android kotlin keyboard-events


【解决方案1】:

使用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
   }
}

【讨论】:

猜你喜欢
  • 2018-04-16
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 2017-04-05
  • 2017-08-14
相关资源
最近更新 更多