Android Text Change Listener mit mehreren EditText-Feldern
In der Android-Entwicklung ermöglicht der TextChangeListener Entwicklern, Änderungen im Textinhalt von EditText-Feldern zu überwachen . Wenn jedoch mehrere EditText-Felder verwendet werden, erfordert das Löschen des Inhalts eines Felds bei Änderung eines anderen eine sorgfältige Implementierung, um Endlosschleifen zu vermeiden.
Problem:
Der bereitgestellte Code versucht, Feld2 zu löschen wenn sich Feld1 ändert und umgekehrt. Dies führt jedoch zu einer Endlosschleife, da jedes Feld ein Änderungsereignis im anderen auslöst, was zu einer endlosen Löschung führt.
Lösung:
Um die Endlosschleife zu verhindern, eine Prüfung sollte hinzugefügt werden, um sicherzustellen, dass nur nicht leere Felder gelöscht werden. Durch Hinzufügen von field1.addTextChangedListener und field2.addTextChangedListener können Sie Änderungen in beiden Feldern überwachen. Fügen Sie in jedem Listener eine Bedingung hinzu, die prüft, ob die CharSequence-Länge größer als 0 ist. Wenn ja, löschen Sie den Inhalt des anderen Felds.
Überarbeiteter 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(""); } });
Indem Sie sicherstellen, dass nur nicht leere Felder gelöscht werden, verhindern Sie die Endlosschleife und ermöglichen Benutzern, Daten jeweils nur in ein Feld einzugeben.
Zusätzliche Hinweise:
Denken Sie daran, die Namenskonventionen einzuhalten und der Klarheit halber die richtige Einrückung zu verwenden. Weitere Einzelheiten finden Sie auch in der offiziellen Dokumentation zu TextWatcher.
Das obige ist der detaillierte Inhalt vonWie können Endlosschleifen verhindert werden, wenn TextChangeListeners mit mehreren EditText-Feldern verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!