Text Change Listener für Android EditText Fields
Problem:
In einer Android-Anwendung Sie möchten sicherstellen, dass jeweils nur eines von zwei EditText-Feldern (Feld1 und Feld2) Inhalt haben kann. Wenn der Benutzer den Text in Feld 1 ändert, sollte Feld 2 gelöscht werden und umgekehrt.
Das Hinzufügen eines TextWatchers zu beiden Feldern führt jedoch zum Absturz der App aufgrund einer Endlosschleife, in der jedes Feld das andere auslöst gelöscht.
Lösung:
Um dieses Problem zu beheben, fügen Sie eine Prüfung zum TextWatcher hinzu onTextChanged-Methode, um das andere Feld nur zu löschen, wenn es nicht leeren Inhalt hat. Hier ist der geänderte 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(""); } });
Mit dieser Änderung löscht die App das andere Feld nur, wenn der Benutzer etwas in das aktuelle Feld eingibt, wodurch sichergestellt wird, dass jeweils nur ein Feld Inhalt enthält.
Das obige ist der detaillierte Inhalt vonWie verhindere ich eine Endlosschleife bei der Verwendung von TextWatchers in Android-EditText-Feldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!