Home >Java >javaTutorial >How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?
Text Change Listener for Android EditText Fields
Problem:
In an Android application, you want to ensure that only one of two EditText fields (field1 and field2) can have content at any given time. When the user changes the text in field1, field2 should be cleared, and vice versa.
However, adding a TextWatcher to both fields causes the app to crash due to an infinite loop where each field triggers the other to be cleared.
Solution:
To resolve this issue, add a check to the TextWatcher's onTextChanged method to clear the other field only if it has non-empty content. Here's the modified code:
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(""); } });
With this modification, the app will only clear the other field when the user types something into the current field, ensuring that only one field has content at a time.
The above is the detailed content of How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?. For more information, please follow other related articles on the PHP Chinese website!