当编号在编辑文本字段中变大时,代码下面会运行无限循环。
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;
}
}
}
答案 0 :(得分:0)
我的猜测是if (num > max)
和if (assign)
始终评估为true,因此始终会调用s.replace(0,number.length(),number);
。
根据afterTextChanged
方法的文档:
调用此方法是为了通知您s中的某个文本 已经变了。对s进行进一步更改是合法的 这个回调,但要注意不要让自己陷入无限 循环,因为您所做的任何更改都将导致调用此方法 再次递归。
直接修改s
会再次调用afterTextChanged
方法,这会再次修改s
,依此类推。