Fragment中调用addTextChangedListener后输入字符父Activity无报错闪退如何解决
问题原因
你代码里的TextWatcher接口的beforeTextChanged和onTextChanged方法中保留了Kotlin的TODO()语句。Kotlin的TODO()不是普通的注释标记,实际运行时会主动抛出NotImplementedError类型的错误,而你代码中仅捕获了Exception类型的异常,Error不属于Exception的子类,无法被你的catch代码块捕获,所以会直接触发应用崩溃。
解决方案
将beforeTextChanged和onTextChanged两个方法中的TODO()语句删除,替换为空实现即可,修改后的TextWatcher代码如下:
etTest.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { var str = s.toString() Toast.makeText(context, str , Toast.LENGTH_SHORT).show() } override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { // 有对应逻辑需求再补充代码,无需求直接留空即可 } override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { // 有对应逻辑需求再补充代码,无需求直接留空即可 } })
额外说明:如果后续需要临时排查所有类型的崩溃问题,可以把catch的参数改成Throwable,但日常开发不推荐这么做,会隐藏正常的错误提示,不利于问题定位。
内容的提问来源于stack exchange,提问作者Abhinav Mohan Mishra
相关产品推荐
相关产品推荐

