Android 编辑文本字段上的无限循环
当编辑文本字段中的数字变大时,下面的代码运行无限循环Android 编辑文本字段上的无限循环,android,android-edittext,Android,Android Edittext,当编辑文本字段中的数字变大时,下面的代码运行无限循环 public void afterTextChanged(Editable s) { String number = s.toString(); boolean assign = true; if (!number.equals("")) { int num = Integer.parseInt(number); if (num > max) { if (assign) { s.r
public void afterTextChanged(Editable s) {
String number = s.toString();
boolean assign = true;
if (!number.equals("")) {
int num = Integer.parseInt(number);
if (num > max) {
if (assign) {
s.replace(0,number.length(),number);
assign = false;
}
} else {
assign = true;
}
}
}
我的猜测是,如果num>max和if赋值总是计算为true,那么s.replace0,number.length,number;他总是被叫来
根据后文更改方法的文档:
调用此方法是为了通知您,在s中的某个位置,文本
已经改变了。对s进行进一步修改是合法的
这是一次回调,但要小心不要让自己陷入无限期
循环,因为您所做的任何更改都将导致调用此方法
再次递归
直接修改s将再次调用后TextChanged方法,该方法将再次修改s,依此类推。这里的最大值是什么?我在代码中没有看到循环。@Bentaye无限循环条件不是由循环子句引起的,它与后文本更改回调的工作方式有关。@Ahmadnaem我可以请您检查我的答案,如果您觉得满意,请接受吗?提前感谢;我在输入类型中使用这个标志textNoSuggestions来避免系统焦点,这意味着通过引起循环的代码更改edittext。我的问题通过这面旗子解决了。