Heim  >  Artikel  >  Java  >  Wie verhindere ich eine Endlosschleife bei der Verwendung von TextWatchers in Android-EditText-Feldern?

Wie verhindere ich eine Endlosschleife bei der Verwendung von TextWatchers in Android-EditText-Feldern?

DDD
DDDOriginal
2024-11-12 09:41:02151Durchsuche

How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?

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!

Stellungnahme:
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