编辑文本字段上的无限循环

时间:2018-04-05 10:06:56

标签: 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.replace(0,number.length(),number);
        assign = false;
      }
    } else {
      assign = true;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

我的猜测是if (num > max)if (assign)始终评估为true,因此始终会调用s.replace(0,number.length(),number);

根据afterTextChanged方法的文档:

  

调用此方法是为了通知您s中的某个文本   已经变了。对s进行进一步更改是合法的   这个回调,但要注意不要让自己陷入无限   循环,因为您所做的任何更改都将导致调用此方法   再次递归。

直接修改s会再次调用afterTextChanged方法,这会再次修改s,依此类推。