You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:39:03