以下是有关Activity.onKeyUp()
当某个键被释放并且未被任何视图处理时调用 活动内部。因此,例如,按键同时按下光标 在TextView内部不会触发事件(除非它是一个 导航到另一个对象)因为TextView处理自己的键 印刷机。
但是,如果我覆盖活动的onKeyUp()
并检查当焦点位于EditText
时键入键时是否会触发,我可以看到onKeyUp()
正在获取在以下情景中被解雇(在AVD上测试)。
如果我正确理解了文档,onKeyUp()
在上述情况下不应被解雇。
那么,文档是错误的,还是我误解了?
有没有其他方法可以捕获任何其他UI元素无法处理的键盘事件?
答案 0 :(得分:0)
这似乎是一个错误,因为如果onKeyDown
有焦点,则EditText
不会被正确调用。但是,这确实意味着我们可以添加一个黑客来判断我们是否应该对onKeyUp
事件作出反应。以下是我处理它的方式:
private val filteredEvents = HashMap<Long, KeyEvent>()
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
filteredEvents.remove(event.downTime)?.let {
Log.d("TAG", "Filtered event occurred. Handle it here.")
}
return super.onKeyUp(keyCode, event)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean =
super.onKeyDown(keyCode, event.also { filteredEvents[it.downTime] = it })