EditText中onEditorAction监听事件执行两次

Android的EditText通过setOnEditorActionListener给文本编辑框设置监听事件,但是在其处理方法onEditorAction中的逻辑在每次回车后都触发了两次,原来是在键盘回车的ACTION_UP和ACTION_DOWN时都会触发这个方法,因此修改代码如下,就防止了两次执行:

 1 public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
 2         //以下方法防止两次发送请求
 3         if (actionId == EditorInfo.IME_ACTION_SEND ||
 4                 (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
 5             switch (event.getAction()) {
 6                 case KeyEvent.ACTION_UP:
 7                     //发送请求
 8                     String keyWord = et_search.getText().toString().trim();
 9                     if (null == keyWord)
10                         keyWord = "";
11                     dismisspopup();
12                     LogUtils.d("向服务器发送搜索请求:" + keyWord);
13                     //发起查询
14                     searchByKeyWord(keyWord);
15                     hideSoftInput();
16                     return true;
17                 default:
18                     return true;
19             }
20         }
21         return false;
22     }  

原文地址:https://www.cnblogs.com/ganchuanpu/p/8514623.html

时间: 2024-11-10 11:12:01

EditText中onEditorAction监听事件执行两次的相关文章

js中的监听事件总结

javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event 1.滚动条监听事件 例:监听滚动条距离页面顶端距离 1 <script type="text/javascript"> 2 window.onscroll= function(){ 3 //变量t是滚动条滚动时,距离顶部的距离 4 var t = document.documentElement.scrollTop||document.body.

ionicModal中的监听事件

//添加监听事件angular.module('MyApp').directive('gotTapped', ['$ionicGesture', function($ionicGesture) { return { restrict: 'A', link: function($scope, $element, $attr) { $ionicGesture.on('tap', function(e) { console.log('I got Tapped!') }, $element); } }

EditText 详细信息(监听事件时,输入改变、透明背景、提示改变文字颜色、密文输入)

1.对EditText输入监视.给EditText 捆绑 addTextChangedListener 监控事件 能够. 2.EditText输入内容.密文显示: android:password="true" 3.将EditText边框设置成透明的: android:background="#00000000" 4.改动EditText中hint文字颜色: android:textColorHint="#ffffff" 非常多时候.我们须要设置

edittext文本变化监听事件

textView.addTextChangedListener(new TextWatcher() {            @Override            public void onTextChanged(CharSequence chars, int arg1, int arg2,                    int arg3) {            } @Override            public void beforeTextChanged(CharS

EditText 使用细节(输入内容改变时的监听事件、透明背景、修改提示文字颜色、输入内容密文显示)

1.对EditText的输入内容进行监听,给EditText 绑定 addTextChangedListener 监听事件 即可. 2.EditText输入内容,密文显示: android:password="true" 3.将EditText边框设置成透明的: android:background="#00000000" 4.修改EditText中hint文字颜色: android:textColorHint="#ffffff" 很多时候,我们

ios ---键盘的监听事件

//在view将要出现的时候重载viewWillAppear方法添加通知 监听事件 keyboardWillShow:  keyboardWillHide: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:

vue v-on监听事件

在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下简单的监听事件代码. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title>

关于AngularJs中监听事件及脏循环的理解

可能很多刚入行或者刚学习的前端对于AngularJs中的一些事件或者概念感觉不理解或者没有思路,今天让我们一起来剖析一下AngularJs中的一些事件. AngularJs中对于的监听事件会用到一个scope函数$watch,它包含了三个参数,首先我们在概念上来了解一下: $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchE

vue 中监听窗口发生变化,触发监听事件, window.onresize &amp;&amp; window.addEventListener(&#39;resize&#39;,fn) ,window.onresize无效的处理方式

1 // 开始这样写,不执行 2 window.onresize = function() { 3 console.log('窗口发生变化') 4 } 5 6 7 // 改成window监听事件 8 window.addEventListener('resize', function() { 9 console.log('窗口发生变化') 10 }) onresize的定义方式 一.直接在html中定义 如<body onresize="doResize()"/> 二.直接