android on Text Change Listener
这个问题寻求一种解决方案,以防止在将文本更改侦听器应用于两个 EditText 字段时出现无限循环,字段 1 和字段 2。当 field1 中的文本更改时,field2 应该被清除,反之亦然。
最初的实现涉及将 TextWatchers 附加到两个字段,其中,当 field1 中的文本更改时,field2 将被清除,反之亦然。但是,由于字段试图无限期地相互更改,这导致了崩溃。
解决方案:
为了防止无限循环,可以添加一个检查TextWatchers 仅在文本不为空时(即长度不为 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(""); } });
此方法确保当 field1 发生变化并有文本时,它会清除 field2。同样,field2 仅在其文本不为空时才清除 field1。因此,在实现所需行为的同时避免了无限循环。
以上是在文本更改时清除 EditText 字段时如何防止无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!