Wenn wir ein TextWatcher
zu einem TextView
hinzufügen, und ich möchte an diesen TextView
einen Buchstaben anhängen, jedes Mal wenn der Benutzer einen Buchstaben darin schreibt, aber dies ruft den TextWatcher
wieder auf Listener, so weiter zu StackOverFlow error
, also wie man einen Text anhängt, ohne den TextWatcher
Listener erneut aufzurufen?
Die Dokumentation von afterTextChanged sagt:
Diese Methode wird aufgerufen, um Sie darauf hinzuweisen, dass der Text innerhalb von s geändert wurde. Es ist legitim, weitere Änderungen an s durch diesen Rückruf vorzunehmen, , aber achten Sie darauf, sich nicht in eine Endlosschleife zu begeben, da alle von Ihnen vorgenommenen Änderungen dazu führen, dass diese Methode rekursiv erneut aufgerufen wird . (Sie erfahren nicht, wo die Änderung stattfand, da andere afterTextChanged () -Methoden möglicherweise bereits andere Änderungen vorgenommen und die Offsets ungültig gemacht haben. Wenn Sie dies jedoch wissen müssen, können Sie setSpan(Object, int, int, int)
in onTextChanged(CharSequence, int, int, int)
verwenden, um Ihren Platz zu markieren dann schau von hier auf, wo die Spannweite endete.
Also, mit jedem s.append("A")
hast du call afterTextChanged()
wieder und so weiter.
Tags und Links android textview textwatcher