在我的应用程序中,我必须禁用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);
}
}
});
感谢
检查以下
- 你要导入这行吗?-导入android.text.TextWatcher
- 是否正确初始化EditText
-
在方法-afterTextChanged(Editable s)上设置一个Log.v,并首先检查它。
public void afterTextChanged(可编辑s){
Log.v(TAG,"AfterTextChanged工作");
}
-
如果第三点正确获得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);
}
}
};