KeyEvent 和 EditorInfo 有什么区别?

What is the difference between KeyEvent and EditorInfo?

当我遇到 KeyEventEditorInfo 时,我正在学习 textView.setOnEditorActionListener。这是我的代码:

actv_search_activity.setOnEditorActionListener(object : TextView.OnEditorActionListener{
            override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent): Boolean {
                if (actionId == EditorInfo.IME_ACTION_SEARCH){

                }
                return true
            }

        })

早些时候我尝试使用 if (event!!.action == KeyEvent.KEYCODE_SEARCH) 我从中获得了 NPE。

那么KeyEventEditorInfo有什么区别呢?

据我所知,KeyEvents 非常基础, 用户在键盘上点击 9 -> KeyEvents ACTION_DOWN, KEYCODE_9 , ACTION_UP 被发送。 EditorInfo 更多地基于“按键”将执行的操作。 EditorInfo.IME_ACTION_SEARCH -> “操作键执行“搜索”操作,将用户带到搜索他们输入的文本的结果(在任何合适的上下文中)。”

两者比较:

KEYCODE_9 就是 9.

IME_ACTION_SEARCH 指的是表示上下文标准做法的关键事件,例如“在页面上查找”允许您键入字符串并搜索该字符串。允许您执行此操作的密钥会发送 IME_ACTION_SEARCH 事件。

通常您没有用于搜索 across 应用程序和 os 版本的指示按钮。

通常情况下,您确实有一个 9 的口述按钮。

编辑器 https://developer.android.com/reference/android/view/inputmethod/EditorInfo

按键事件 https://developer.android.com/reference/android/view/KeyEvent