Android EditText 字段的文本更改侦听器
问题:
在 Android 应用程序中,您希望确保在任何给定时间只有两个 EditText 字段(field1 和 field2)中只有一个可以包含内容。当用户更改 field1 中的文本时,field2 应该被清除,反之亦然。
但是,向这两个字段添加 TextWatcher 会导致应用程序崩溃,因为每个字段都会触发另一个字段的无限循环。
解决方案:
要解决此问题,请在 TextWatcher 的 onTextChanged 方法中添加一个检查,以仅在其他字段具有非空内容时清除该字段。以下是修改后的代码:
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 字段中使用 TextWatchers 时如何防止无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!