bha*_*191 3 android settext android-edittext android-textwatcher
我正在使用EditText.当我使用setText()时.TextWatcher事件正在调用.我不需要打电话吗?谁能帮我?
txt_qty.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
您可以取消注册观察者,然后重新注册它.
要取消注册观察者,请使用以下代码:
txt_qty.removeTextChangedListener(yourTextWatcher);
Run Code Online (Sandbox Code Playgroud)
重新注册它使用此代码:
txt_qty.addTextChangedListener(yourTextWatcher);
Run Code Online (Sandbox Code Playgroud)
或者,您可以设置一个标志,以便您的观察者知道您何时自己更改了文本(因此应该忽略它).
在您的活动中定义一个标志是:boolean isSetInitialText = false;
当你 在调用set text之前调用txt_qty.settext(yourText) make 时isSetInitialText = true,
然后将您的观察者更新为:
txt_qty.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (isSetInitialText){
isSetInitialText = false;
} else{
// perform your operation
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (isSetInitialText){
isSetInitialText = false;
} else{
// perform your operation
}
}
@Override
public void afterTextChanged(Editable s) {
if (isSetInitialText){
isSetInitialText = false;
} else{
// perform your operation
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4539 次 |
| 最近记录: |