Heim > Java > javaLernprogramm > 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
Freigeben: 2024-11-12 09:41:02
Original
214 Leute haben es durchsucht

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

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!

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