addTextChangedListener()
nimmt eine TextWatcher
, die mit 3 Methoden eine Schnittstelle ist. Was Sie geschrieben haben, funktioniert nur, wenn TextWatcher
nur 1 Methode hatte. Ich gehe davon aus, dass der Fehler, den Sie bekommen, mit Ihrem Lambda zusammenhängt und die anderen beiden Methoden nicht implementiert. Sie haben 2 Optionen für die Zukunft.
1) Graben das Lambda und verwende nur eine anonyme innere Klasse
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
})
2) eine Verlängerung Methode erstellen, so dass Sie einen Lambda-Ausdruck verwenden:
fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
})
}
Und dann die Erweiterung verwenden wie so:
editText.afterTextChanged { doSomethingWithText(it) }
Welchen Fehler gibt es? – voddan