我正在从Java转移到Kotlin以进行Android开发。我想检查EditText中的字段是否为空。所以,我试图让这个:kotlin验证输入字段
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)
}
,但这里有两个问题:
- 它也传递给
signInWithUsernameAndPassword
此外,如果用户名/密码为空 它崩溃,因为给我这个错误:
java.lang.ClassCastException:kotlin.Unit不能转换为java.lang.String
为什么? takeUnless{}
将字符串转换为单位?
谢谢
您能否添加更多信息? 'presenter.usernameError()'方法也可能很有用。你也重新定义'username'和'password'这看起来不正确。 – tynn
你的意思是抛出'preseneter.usernameError()'和'presenter.passwordError()'的返回值吗?如果是这样,你需要在'?:'之后将语句分别更改为'throw preseneter.usernameError()'和'throw presenter.passwordError()'。 – mfulton26
usernameError()和showError()必须打开一个对话框,告诉用户该字段为空@tynn – ste9206