Heim > Java > javaLernprogramm > Wie verhindere ich eine Endlosschleife beim Löschen von EditText-Feldern in Android?

Wie verhindere ich eine Endlosschleife beim Löschen von EditText-Feldern in Android?

DDD
Freigeben: 2024-11-14 12:45:02
Original
722 Leute haben es durchsucht

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

Android EditText: Auf Textänderungen warten und andere Felder leeren

Um sicherzustellen, dass nur eines von zwei Feldern Daten enthält, ist es unbedingt erforderlich Löschen Sie das andere Feld, wenn eines geändert wird. Dieser Bedarf entsteht in Situationen, in denen Feld1 und Feld2, zwei EditText-Felder, nicht beide gleichzeitig Werte enthalten sollten.

Wie in der Frage dargestellt, führt das Anhängen eines TextWatchers an Feld1 und Feld2 zu einer Endlosschleife, in der die Felder jeweils gelöscht werden andere auf unbestimmte Zeit.

Lösung:

Um dieses Problem zu beheben, implementieren Sie eine Prüfung, um das gegenüberliegende Feld nur dann zu löschen, wenn das aktuelle Feld Text enthält. Dies kann erreicht werden, indem die Länge der Eingabezeichenfolge untersucht wird.

Im modifizierten Code unten prüft eine „if“-Anweisung, ob die Länge der Eingabezeichenfolge (d. h. des in das aktuelle Feld eingegebenen Textes) beträgt ungleich 0. Wenn ja, wird das gegenüberliegende Feld gelöscht:

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

Durch die Einbindung dieser Prüfung wird die Endlosschleife unterbrochen und die gewünschte Funktionalität erreicht, wodurch sichergestellt wird, dass immer nur eines der Felder Daten enthält jederzeit.

Das obige ist der detaillierte Inhalt vonWie verhindere ich eine Endlosschleife beim Löschen von EditText-Feldern in Android?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage