禁用EditText时启用TextWatcher

时间:2015-11-04 05:47:36

标签: android android-edittext android-textwatcher

在我的应用中,我必须禁用EditText并以编程方式更改EditText中的文字,问题是我希望EditText收听我在EditText上添加的TextWatcher。< / p>

EditText不是监听观察者。

所以任何人都可以帮助启用EditTextTextWatcher禁用时监听EditText,并以编程方式填充KeyBoard,而不是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); } } });

我尝试了以下代码

  var postApiUrl = '/api/WallPost/', commentApiUrl = '/api/Comment/';

谢谢

3 个答案:

答案 0 :(得分:0)

检查以下内容

  1. 你导入这行吗? - import android.text.TextWatcher;
  2. 您是否正确初始化了EditText?
  3. 在方法上设置Log.v - afterTextChanged(可编辑的s)并首先检查它。

    public void afterTextChanged(Editable s){

    Log.v(TAG,&#34; AfterTextChanged工作&#34;);

    }

  4. 如果第3点正确获取Log值。 错误在方法keyPadOnOff(boolean)

  5. 5.检查方法keyPadOnOff(boolean)。

答案 1 :(得分:0)

经过对Google的大量挖掘后,我发现我们无法让EditText听取观察者的意见

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

所以我做了什么,当我从我的代码中填充EditText中的文本时触发事件。

答案 2 :(得分:0)

您可以使用以下行启用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);
            }

        }
    };