2 qq 28627123 qq_28627123 于 2016.09.14 10:31 提问

Android EditText利用TextWatcher判断问题 20C

android 开发,有一个需求,就是利用扫描仪快速往app界面中的Edittext输入一串数字,当这串数字符合规则的时候,调用查询方法。否则不符合规则,就提示。但是大家用过这个TextWatcher的都知道,它每次改变内容都会调用方法,所以致使不到一秒的时间连续调用好多次不符合规则的情况,程序就异常了。不知道有什么方法可以解决,下面是简单的举例:

 package com.xzsj.measure;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Window;
import android.widget.EditText;
import android.widget.Toast;

public class GoneNActivity extends Activity {
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_gone_n);
        // 绑定EditText输入框
        editText = (EditText) findViewById(R.id.editText1);
        // 实现文字内容改变监听(TextWatcher)
        editText.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                // 内容改变后的监听方法
                if (s.toString().length() == 10) {
                    Toast.makeText(GoneNActivity.this, "格式正确!", Toast.LENGTH_SHORT).show();
                } else {
                    // 不符合格式,(length等于10符合规则,那么这个else分支,连续执行9次,所以异常了,有没有什么办法,实现类似效果,但是不异常)
                    Toast.makeText(GoneNActivity.this, "格式错误!", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

5个回答

a_zhon
a_zhon   2016.09.14 10:41

你把代码放到onTextChanged方法中试一下。

a120705230
a120705230   2016.09.14 11:28
shaipxiang
shaipxiang   2016.09.14 11:32

Toast,单独封装出来试试

a120705230
a120705230   2016.09.14 11:36

地址是https://github.com/Blankj/AutoCheckEditTextDemo
我觉得是你Toast的问题,不要用Toast试试

qq840727854
qq840727854   2016.09.14 12:05

间隔设置0.5秒

0.5秒里 如果内容 发生改边 就不去搜索

如果 不改变就去搜索

效果不错的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android EditText 共用TextWatcher,在TextWatcher中确定对应的被观察对象
/** * 内部类实现TextWatcher公用 */ private class MyTextWatcher implements TextWatcher{ private EditText editText; private MyTextWatcher(EditText editText) { this.editT
最强理解:Android对EditText输入时设置监听即TextWatcher的用法
最强理解:Android对EditText输入时设置监听即TextWatcher的用法有时我们需要对EditText输入时设置监听,比如对EditText进行格式控制(一般用正则表达式),判断输入的内容是否合法。笔者学习android一般先查看官方文档,在学习本知识点的时候看了一些其他人写的博客,但是看了几篇博文仍旧一些参数含义的不是很理解,本文笔者就从官方文档开始讲起,我们先看官方文档怎么介绍Te
详解EditText输入监听TextWatcher
日常开发中,我们可能会遇到需要监听EditText输入,比如判断输入是否为电话号码,获取输入的数据长度来限定字数等。这就需要监听EditText的输入状态。EditText使用TextWatcher实现类似按钮监听事件:使用方法 效果图: MainActivity.javapublic class MainActivity extends AppCompatActivity { priv
控件避免重复addTextChangedListener(mTextWatcher)的问题
TextWatcher重复添加
关于android的EditText的监听接口TextWatcher——调色盘例子
在做调色盘的例子时,除了通过按钮点击“+”和“-”来改变rgb的值,还需要能够直接改变EditText的值来调颜色,这个时候需要用到EditText的监听接口TextWatcher。 因为要同时监听三个EditText,所以用一个类TextChange继承TextWatcher。 //对EditText值监听 public class TextChange implements
Android 巧用正则表达式+TextWatcher实时限制用户输入
一般我们在限制用户输入的时候,都是要等到用户在EditText里面输入了文本后,点击某个按钮,再去校验用户的输入是否符合规范。
TextWatcher引起activity内存泄露的问题
TextWatcher会引起activity内存泄露。 EditText设置了addTextChangedListener的界面,要在onDestroy里调用removeTextChangedListener释放掉。
EditText绑定TextWatcher后处理事件卡顿
今天遇到一个问题,需要监听EditText中的内容变化,当编辑框内的内容清空时加载网络数据,自然而言会在afterTextChanged方法中执行我的对应逻辑,但是遇到了一个问题,当我的内容变化时,UI直接卡死。
EditText焦点的获取和TextWatcher的使用
当点击EditText时,通过request获取焦点时,如果
Android:EditText动态输入监听TextWatcher
我们经常看到类似于必须等到姓名,密码都输入有内容,登录按钮才会可点击的功能 代码实现就是用到TextWatcher 下面我们监听两个 EditText etLoginname,etLoginpwd;的动态输入,当两个EditText都有内容的时候Button btLogin;可点击 代码: @Override protected void onCreate(Bundle savedI