禁用EditText时启用TextWatcher



在我的应用程序中,我必须禁用EditText并用程序更改EditText中的文本,问题是我想让EditText监听我在EditText上添加的TextWatcher。

EditText不是一个善于倾听的观察者。

因此,请任何人帮助启用EditText侦听TextWatcher,同时它被禁用,并且文本是通过程序而不是通过KeyBoard填充到EditText的。

我尝试了以下代码

txtShift.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) {
            // TODO Auto-generated method stub
        }
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            if (s.length()>0) {
                keyPadOnOff(false);
            }else {
                keyPadOnOff(true);
            }       
        }
    });

感谢

检查以下

  1. 你要导入这行吗?-导入android.text.TextWatcher
  2. 是否正确初始化EditText
  3. 在方法-afterTextChanged(Editable s)上设置一个Log.v,并首先检查它。

    public void afterTextChanged(可编辑s){

    Log.v(TAG,"AfterTextChanged工作");

    }

  4. 如果第三点正确获得Log值。错误在方法keyPadOnOff(布尔值)中

5.检查方法键PadOnOff(布尔值)。

经过对谷歌的大量挖掘,我发现如果EditText制作了,我们就无法让它监听观察者

et.setFocusable(false);
et.setClickable(false);

因此,当我从代码中填充EditText中的文本时,我触发了该事件。

您可以使用以下行启用TextWatcher:

txtShift.removeTextChangedListener(textWatcher);

你可以从开始

txtShift.addTextChangedListener(textWatcher);
TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
        }
        @Override
        public void afterTextChanged(Editable s) {
            if (s.length()>0) {
                keyPadOnOff(false);
            }else {
                keyPadOnOff(true);
            }
        }
    };

相关内容

  • 没有找到相关文章

最新更新