美文网首页
关于EditText设置addTextChangedListen

关于EditText设置addTextChangedListen

作者: 狼少丷 | 来源:发表于2020-10-27 14:03 被阅读0次

    一 ,事情起因

    刚出现问题时候也是一脸的懵!?
    用假数据搭建页面时没有任何问题的 , 随着数据的接入刷新等操作的完善这个简单的TextView的方法addTextChangedListener它(抽疯了)!
    项目需求要输入寄存储(上传至服务端) , 然而我们错就错在轻看了它(不了解+不细心所致)

    关于TextWatcher那几个方法的解释

    TextWatcher的几个方法,分别监测了文本"改变前"、"改变时"、"改变中"三种状态。

    
           mEditText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    //这个方法被调用,说明在s字符串中,从start位置开始的count个字符即将被长度为after的新文本所取代。
                    // 在这个方法里面改变s,会报错。
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    //这个方法被调用,说明在s字符串中,从start位置开始的count个字符刚刚取代了长度为      before的旧文本。
                    // 在这个方法里面改变s,会报错。
                }
                @Override
                public void afterTextChanged(Editable s) {
                    //这个方法被调用,那么说明s字符串的某个地方已经被改变。
                }
            });
    
    

    二,寻找问题并解决

    问题出现了,带着一脸懵去改.通过现象(当EditText有内容变化时,光标迁移到起始位置,并阻止输入).
    通过log日志发现无限循环调用.那么问题找到了 , 因为TextWatcher afterTextChanged无限迭代导致的异常!
    网上提供了各种解决方法:

    1. 为EditText 设置inputType="textNoSuggestions"
    2. 通过tag方法在阻止重复
    3. 通过调整设置addTextChangedListener(new TextWatcher());的时机 , 获取焦点时设置 , 或者在
      afterTextChanged(Editable s) 方法中有removeTextChangedListener()操作等

    解决问题究其原因 , 为什么出现循环! 我是在afterTextChanged(Editable s) 进行部分逻辑的 . 那么afterTextChanged(Editable s) 和时被调用是关键 !

    addTextChangedListener()是TextView的方法 , EditText继承自TextView , 当然也有这个方法。
    从官方的介绍可知 , 添加了TextWatcher后 , 每当TextView的文本改变时 , TextWatcher的那几个方法就会被调用.

    另外一句,是关于在 afterTextChanged (Editable s)中setTest()的一些问题 , 也就是在监测"改变后"状态的方法又去改变那个文本 , 这样想想都容易出问题 .
    那么问题就出在 , 原本改变之后的文本 , 有呗某处改变了 , 再次的调用了afterTextChanged (Editable s)循环往复!
    如果以上的方法不能解决问题 , 那么耐心的寻找是否哪里对EditText有操作的代码~

    相关文章

      网友评论

          本文标题:关于EditText设置addTextChangedListen

          本文链接:https://www.haomeiwen.com/subject/mwqxvktx.html