Android 调用append后的Textwacher循环
我对TextWatcher有问题。编辑完成后,我想附加“kg”字符串。但在我尝试编辑editView后,它会循环,我的应用程序会崩溃。有人能帮我吗?谢谢Android 调用append后的Textwacher循环,android,Android,我对TextWatcher有问题。编辑完成后,我想附加“kg”字符串。但在我尝试编辑editView后,它会循环,我的应用程序会崩溃。有人能帮我吗?谢谢 它的循环是因为设置文本调用PostTextChanged。您可以删除文本观察程序,更改文本,然后重新添加文本观察程序。它的循环,因为设置文本调用后文本更改。您可以删除文本监视程序,更改文本,然后重新添加文本监视程序。您可以使用if语句来管理此操作,但我认为它可以以更好的方式关闭 weight.addTextChangedListene
它的循环是因为设置文本调用PostTextChanged。您可以删除文本观察程序,更改文本,然后重新添加文本观察程序。它的循环,因为设置文本调用后文本更改。您可以删除文本监视程序,更改文本,然后重新添加文本监视程序。您可以使用if语句来管理此操作,但我认为它可以以更好的方式关闭
weight.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
if(!editable.getText().contains("kg"))
editable.append(" kg");
}
});
你可以用if语句来处理这个问题,但我认为它可以用更好的方式来处理
weight.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
if(!editable.getText().contains("kg"))
editable.append(" kg");
}
});
遵循以下步骤:
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);
}
});
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);
}
});
看这里:看这里:已经试过了。每次我按一个键(字母、数字、退格或任何其他键),它都会添加“kg”。这种编辑可能会导致它在您第一次输入字符时添加kg,然后再也不会添加kg了。每次我按一个键(字母、数字、退格或任何其他键),它都会添加“kg”。此编辑可能会导致它在您第一次输入字符时添加kg,然后再也不会添加kg。根据您的想法,它不再循环,但每次我按任何键,它都会添加“kg”。我能想到的混乱解决方案是将可编辑设置为
editable.text.replaceFirst(“kg”),然后在末尾附加“kg”。尝试你的想法,它不再循环,但每次我按任何键时它都会添加“kg”。我能想到的混乱解决方案是将可编辑设置为editable.text.replaceFirst(“kg”),即“kg”)
然后在末尾加上“kg”,只需稍作改动,你的想法就行了。我不能使用editable,因为它没有getText方法。我只是改变了重量和它的工作编辑。谢谢你,你的想法很好。我不能使用editable,因为它没有getText方法。我只是改变了重量和它的工作编辑。非常感谢。