android - kotlin:如果 EditText 启用了 setError,如何获取?
问题描述
如何验证 EditText 是否启用了 setError?
如果 EditText 有错误,我想禁用一个按钮。
任何其他方式来实现这一点。
当我放入view.calcbutton.setEnabled(false)
validateEditText 函数时它有点工作,但我使用 validateEditText 函数来验证多个 EditText,并且只有最后一个函数调用禁用按钮。如果第一个函数调用禁用按钮,则第二个函数调用再次启用它,反之亦然。
但我想在这个函数之外做,因为如果多个 EditTexts 之一有 setError 按钮应该被禁用。
//global var blockcalcbutton
var blockcalcbutton = 0
//function to validate EditTexts and set blockcalcbutton=1 if setError
validateEditText(view.input_volt, view, getString(R.string.invalid_volt))
if(blockcalcbutton == 1) {
view.calcbutton.setEnabled(false)
view.calcbutton.setText(getString(R.string.calcbutton_disabled))
view.calcbutton.setBackgroundResource(R.color.buttonDisabled)
} else {
view.calcbutton.setEnabled(true)
view.calcbutton.setText(getString(R.string.calcbutton_enabled))
view.calcbutton.setBackgroundResource(R.color.buttonBackground)
}
fun validateEditText(editText: EditText, message: String) {
val myEditText = editText
myEditText.addTextChangedListener(object: TextWatcher {
override fun afterTextChanged(s: Editable?) {
if(myEditText.text.toString() == "" || myEditText.text.toString() == "." || myEditText.text.toString() == "0") {
//setError
myEditText.setError(message)
//var to disable Button
blockcalcbutton = 1
} else {
//delete setError
myEditText.setError(null)
//var to enable Button
blockcalcbutton = 0
}
}
解决方案
您可以创建回调以在设置错误或删除错误时进行通知。
interface EditTextErrorListener {
fun onErrorSet()
fun onErrorDeleted()
}
在这里您可以通知:
if(myEditText.text.toString() == "" || myEditText.text.toString() == "." || myEditText.text.toString() == "0") {
//setError
myEditText.setError(message)
---> listener.onErrorSet()
//var to disable Button
blockcalcbutton = 1
} else {
//delete setError
myEditText.setError(null)
---> listener.onErrorDeleted()
//var to enable Button
blockcalcbutton = 0
}
推荐阅读
- html - 具有双高的 HTML 表格行
- r - 如何在R中将点更改为逗号
- python - 如何使用 django-two-factor-auth 使用多个 _base.html 文件?
- javascript - GitHub 工作流未终止
- javascript - 如何解决 sinonJS 存根?
- java - 使用 javax.swing 进行降价
- typescript - syncfusion export pdf 显示切换按钮的状态
- ios - 如何在后续推送通知中保留通知服务扩展中的变量值
- python - 为什么在遍历列表矩阵时出现列表索引超出范围错误?
- android - 如何使用普通 Adlistener 调用所有覆盖仅在 Facebook 原生广告上调用 onAdloaded