Unter welchen Umständen sollte ich afterTextChanged
anstelle von onTextChanged
und umgekehrt verwenden?
quelle
Unter welchen Umständen sollte ich afterTextChanged
anstelle von onTextChanged
und umgekehrt verwenden?
Diese Ereignisse werden in der folgenden Reihenfolge aufgerufen:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Dies bedeutet, dass die Zeichen durch neuen Text ersetzt werden sollen. Der Text kann nicht bearbeitet werden.
Verwendung: Wenn Sie sich den alten Text ansehen müssen, der sich ändern wird.
onTextChanged (CharSequence s, int start, int before, int count) .
Änderungen wurden vorgenommen, einige Zeichen wurden gerade ersetzt. Der Text kann nicht bearbeitet werden.
Verwendung: Wenn Sie sehen möchten, welche Zeichen im Text neu sind.
afterTextChanged (bearbeitbare s) .
Das gleiche wie oben, außer dass der Text jetzt bearbeitet werden kann .
Verwendung: Wenn Sie den neuen Text sehen und möglicherweise bearbeiten müssen.
Wenn ich nur auf Änderungen in höre EditText
, muss ich die ersten beiden Methoden überhaupt nicht verwenden. Ich werde nur neue Werte in der dritten Methode erhalten und bei Bedarf neuen Text korrigieren. Wenn ich jedoch genaue Änderungen an den Werten feststellen müsste, würde ich die ersten beiden Methoden verwenden. Wenn ich den Text nach dem Anhören der Änderungen auch bearbeiten müsste, würde ich dies bei der dritten Methode tun.
public void afterTextChanged (Editable s)
public void beforeTextChanged (CharSequence s, int start, int count, int after)
public void onTextChanged (CharSequence s, int start, int before, int count)
Direkt aus der Android-Referenz für TextWatcher .
quelle
afterTextChanged (Editable s)
- Diese Methode wird aufgerufen, wenn der Text geändert wurde. Da Änderungen, die Sie vornehmen, dazu führen, dass diese Methode rekursiv erneut aufgerufen wird, müssen Sie bei der Ausführung von Operationen hier aufpassen, da dies sonst zu einer Endlosschleife führen kann .onTextChanged (CharSequence s, int start, int before, int count)
- Diese Methode wird aufgerufen, um Sie darüber zu informieren, dass innerhalb von s die am Anfang beginnenden Zählzeichen den alten Text ersetzt haben, der zuvor eine Länge hatte. Es ist ein Fehler, zu versuchen, über diesen Rückruf Änderungen an s vorzunehmen.quelle