Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑文本字段上的无限循环_Android_Android Edittext - Fatal编程技术网

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。我的问题通过这面旗子解决了。