使用 setText() 不想调用 textwatcher 事件?
using setText() don't want to call textwatcher events?
我正在使用 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) {
}
});
谢谢。
您可以取消注册观察者,然后重新注册。
要取消注册观察者,请使用此代码:
txt_qty.removeTextChangedListener(yourTextWatcher);
要重新注册它,请使用此代码:
txt_qty.addTextChangedListener(yourTextWatcher);
或者,您可以设置一个标志,以便您的观察者知道您何时自己更改了文本(因此应该忽略它)。
在你的 activity 中定义一个标志是:
布尔值 isSetInitialText = false;
并且当您调用 txt_qty.settext(yourText)
时,在调用设置文本之前制作 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
}
}
});
我正在使用 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) {
}
});
谢谢。
您可以取消注册观察者,然后重新注册。
要取消注册观察者,请使用此代码:
txt_qty.removeTextChangedListener(yourTextWatcher);
要重新注册它,请使用此代码:
txt_qty.addTextChangedListener(yourTextWatcher);
或者,您可以设置一个标志,以便您的观察者知道您何时自己更改了文本(因此应该忽略它)。
在你的 activity 中定义一个标志是: 布尔值 isSetInitialText = false;
并且当您调用 txt_qty.settext(yourText)
时,在调用设置文本之前制作 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
}
}
});