我对TextWatcher有问题。完成编辑后,我想添加“ kg”字符串。但是,当我尝试编辑editView后,它会循环播放,并且我的应用程序崩溃。有人可以帮我吗?谢谢
weight = findViewById(R.id.editText);
weight.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
editable.append(" kg");
}
});
答案 0 :(得分:2)
您可以使用if语句进行管理,但我认为它可以更好地解决
weight.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
if(!editable.getText().contains("kg"))
editable.append(" kg");
}
});
答案 1 :(得分:0)
它循环,因为设置文本调用afterTextChanged。您可以做的就是删除文本监视程序,更改文本,然后重新添加文本监视程序。
答案 2 :(得分:0)
请按照以下步骤操作:
再次添加TextWatcher
weight.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().contains("kg")) return
weight.removeTextChangedListener(this);
editable.append(" kg");
weight.addTextChangedListener(this);
}
});