2015-11-04 61 views
0

在我的应用程序中,我必须禁用EditText并以编程方式更改EditText中的文本,问题是我想要EditText来监听我在EditText上添加的TextWatcher。禁用EditText时启用TextWatcher

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); 

      }  
     } 
    }); 

感谢

+3

如果文本被填充到编程的EditText那么为什么你需要TextWatcher:

txtShift.removeTextChangedListener(textWatcher); 

你可以开始?在将文本设置为EditText时,您不能触发事件吗? –

+0

你试过的是什么? – Amy

+0

@DhavalPatel,是的,我只有这个选项来触发动作,而填充的文本,如果它是不可能通过观察者 –

回答

0

检查下列项目

  1. 您导入此行 - 进口android.text.TextWatcher?;
  2. 你初始化的EditText正常吗?
  3. 上设置方法的Log.v - afterTextChanged(可编辑或多个)和第一检查。

    公共无效afterTextChanged(编辑S){

    Log.v(TAG, “AfterTextChanged工作”);

    }

  4. 如果第三个点得到正确的对数值。 该错误是在该方法中keyPadOnOff(布尔值)

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

0

后,在谷歌这么多挖我发现我们都无法使EditText监听守望者,如果它做出

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

所以我做什么,我触发事件时,我在EditText从我的代码填入的文字。

0

你可以用这条线使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); 
      } 

     } 
    };