Android中为EditText编写空值错误提示函数的崩溃问题
解决EditText空值校验崩溃问题
首先要明确:你贴出的日志里大部分是Support库与旧Android系统(Dalvik虚拟机,对应Android 4.x版本)的兼容警告,这些警告不会直接导致崩溃,真正的崩溃原因出在你的代码逻辑里。
你调用了et.length(),但EditText本身并没有这个方法!要获取输入框的文本长度,你需要先拿到它的文本内容,再调用长度方法,修正后的代码如下:
fun errorEmpty(et: EditText) { // 先获取EditText的文本,同时避免空指针异常 val inputText = et.text?.toString() ?: "" if (inputText.isNotEmpty()) { et.error = null } else { et.error = "Error, field must not be empty" et.requestFocus() } }
崩溃原因说明
EditText继承自View,而View类并没有length()方法,当你调用et.length()时,虚拟机找不到对应的方法,就会抛出NoSuchMethodException,直接导致应用崩溃。
额外优化提示
- 增加
et.text的空值判断:虽然正常场景下EditText的text不会为null,但加上?: ""可以规避极端情况的空指针问题 - 用Kotlin自带的
isNotEmpty()替代length() > 0,代码更简洁易读
调用方式和你原来的写法一致即可正常运行:
val et = someEditText errorEmpty(et)
内容的提问来源于stack exchange,提问作者Said
相关产品推荐
相关产品推荐

