Ich ziehe von Java nach Kotlin für meine Android-Entwicklung. Ich möchte überprüfen, ob ein Feld in EditText leer ist oder nicht. Also habe ich versucht, dies zu machen:kotlin verifiziere Eingabefelder
override fun checkFields() {
val username = username.text.toString().trim().takeUnless { username.text.isNullOrEmpty() } ?: presenter.usernameError()
val password = password.text.toString().trim().takeUnless { password.text.isNullOrEmpty() } ?: presenter.passwordError()
presenter.signInWithUsernameAndPassword(username as String,password as String)
}
aber es gibt zwei Probleme:
- es geht auch auf die
signInWithUsernameAndPassword
auch wenn Benutzername/Passwort leer stürzt, weil mir gibt dieser Fehler:
java.lang.ClassCastException: kotlin.Unit nicht java.lang.String gegossen werden kann
warum? takeUnless{}
wandelt String in Einheit um?
Dank
Können Sie weitere Informationen hinzufügen? Die 'presenter.usernameError()' Methode könnte ebenfalls von Interesse sein. Außerdem definieren Sie 'Benutzername' und' Passwort' neu, was nicht richtig erscheint. – tynn
Wollten Sie die Rückgabewerte von 'preseneter.usernameError()' und 'presenter.passwordError()'? Wenn ja, müssen Sie Ihre Anweisungen nach '?:' In 'throw preseneter.usernameError()' und 'throw presenter.passwordError()' ändern. – mfulton26
usernameError() und showError() müssen eine Dialog-Warnung geöffnet werden, um dem Benutzer zu zeigen, dass das Feld leer ist. @tynn – ste9206