Heim > Java > javaLernprogramm > Wie kann eine Endlosschleife beim Löschen von EditText-Feldern bei Textänderungen verhindert werden?

Wie kann eine Endlosschleife beim Löschen von EditText-Feldern bei Textänderungen verhindert werden?

Barbara Streisand
Freigeben: 2024-11-20 12:19:09
Original
278 Leute haben es durchsucht

How to Prevent Infinite Loop When Clearing EditText Fields on Text Change?

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("");
   }
  });
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage