guzhizang 2023-07-06 16:55 采纳率: 71.4%
浏览 41
已结题

关于#android一次回车触发多次事件#的问题,如何解决?

android一次回车触发多次事件
java版回车事件监听

判断回车事件的方法如下:

监听事件为:
View.OnKeyListener


public static boolean isEnterKeyDown(int keyCode, KeyEvent keyEvent) {
        return keyEvent != null && keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_DOWN;
    }

但是发现会触发两次;
经研究发现 在模拟器中 一次键盘的回车事件 分别触发了两次 ACTION_UP和两次 ACTION_DOWN

sdk版本
```javascript
build_versions.min_sdk = 19
build_versions.target_sdk = 29
build_versions.build_tools = "29.0.3"
ext.build_versions = build_versions


  • 写回答

2条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2023-07-06 17:15
    关注

    使用 OnEditorActionListener:在处理文本输入时,可以使用 EditText 的 setOnEditorActionListener 方法来监听回车事件。这个监听器可以确保只会在用户完成输入并按下回车键时才触发回调。

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if (actionId == EditorInfo.IME_ACTION_DONE || isEnterKeyDown(keyEvent)) {
                // 处理回车事件
                return true;
            }
            return false;
        }
    });
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 7月6日