Android auf Text Change Listener
Diese Frage sucht nach einer Lösung, um eine Endlosschleife zu verhindern, wenn ein Text Change Listener auf zwei EditText-Felder angewendet wird. Feld1 und Feld2. Bei einer Textänderung in Feld1 sollte Feld2 gelöscht werden und umgekehrt.
Die anfängliche Implementierung umfasste das Anhängen von TextWatchern an beide Felder, wobei bei einer Textänderung in Feld1 Feld2 gelöscht werden würde und umgekehrt. Dies führte jedoch zu einem Absturz, da die Felder versuchten, sich auf unbestimmte Zeit gegenseitig zu ändern.
Lösung:
Um die Endlosschleife zu verhindern, kann eine Prüfung hinzugefügt werden die TextWatchers, um das andere Feld nur zu löschen, wenn sein Text nicht leer ist (d. h. wenn die Länge ungleich 0 ist).
Hier ist eine aktualisierte Implementierung:
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(""); } });
Dieser Ansatz stellt sicher, dass Feld2 gelöscht wird, wenn sich Feld1 ändert und Text enthält. Ebenso löscht Feld2 Feld1 nur, wenn sein Text nicht leer ist. Dadurch wird die Endlosschleife vermieden und gleichzeitig das gewünschte Verhalten erreicht.
Das obige ist der detaillierte Inhalt vonWie kann eine Endlosschleife beim Löschen von EditText-Feldern bei Textänderungen verhindert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!