Android EditText:监听文本更改并清空其他字段
要确保两个字段中只有一个包含数据,必须如果修改了另一字段,则清除该字段。这种需要出现在 field1 和 field2(两个 EditText 字段)不应同时保存值的情况下。
如问题中所示,将 TextWatcher 附加到 field1 和 field2 会导致无限循环,其中字段会清除每个字段
解决方案:
要解决此问题,请实施检查以仅在当前字段包含文本时清除相反字段。这可以通过检查输入字符串的长度来实现。
在下面修改后的代码中,“if”语句检查输入字符串(即输入到当前字段中的文本)的长度是否为与 0 不同。如果是,则清除相反的字段:
field1.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.length() != 0) field2.setText(""); } }); field2.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.length() != 0) field1.setText(""); } });
通过合并此检查,无限循环被打破,并实现所需的功能,确保只有一个字段包含数据在任何给定时间。
以上是Android 中清除 EditText 字段时如何防止无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!