android - 编辑字段文本后隐藏文本输入布局的错误
问题描述
在用户解决错误后,我试图在文本输入布局上隐藏错误,但我不知道该怎么做,因为 afterTextChanged 函数似乎无法使用它。我怎样才能做到这一点?
这是我正在谈论的部分:
loginViewModel.loginFormState.observe(this, Observer {
val loginState = it ?: return@Observer
// disable login button unless fields are valid
binding.btnLogin.isEnabled = loginState.isDataValid
if (loginState.emailError != null) {
binding.etEmail.error = getString(loginState.emailError)
}
if (loginState.passwordError != null) {
binding.tfPassword.error = getString(loginState.passwordError)
}
})
binding.etEmail.afterTextChanged {
loginViewModel.loginDataChanged(
binding.etEmail.text.toString(),
binding.etPassword.text.toString()
)
}
binding.etPassword.afterTextChanged {
loginViewModel.loginDataChanged(
binding.etEmail.text.toString(),
binding.etPassword.text.toString()
)
}
private fun TextInputEditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
})
即使用户正确输入密码并且他们可以单击我拥有的按钮,错误仍然存在,我怎样才能让它消失?
解决方案
您可以使用方法并作为参数setError
传递。null
从文档
设置将在我们的 EditText 下方显示的错误消息。如果错误为空,则错误消息将被清除。
您可以在 afterTextChanged 中调用此方法
textInputEditText.addTextChangedListener (object: TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { }
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { }
override fun afterTextChanged(s: Editable?) {
textInputLayout.error = null
}
})
推荐阅读
- javascript - React Typescripted 高阶组件丢失了传递组件的通用 prop 类型
- python - 如何将前一行中的值与当前行中的值相乘
- xcode - 你如何在按钮之间共享一个随机生成的整数?
- angular - Angular:向 app.module.ts 添加导入会引发错误
- amazon-iam - Minio:密码更改策略
- javascript - 在 Javascript 中寻找最老的用户
- android - 程序类型已经存在:dagger.Binds
- c# - 如何将列表从我的第一个表单传递到第二个表单,向其中添加数据,然后在我的第一个表单上显示它?C#
- html - 将响应式卡片图像中的图标或按钮居中
- python - 如何在生成文件中添加多个标题(HDR)和对象?