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

Android单个EditText添加多个TextWatcher仅后者生效问题排查

EditText多TextWatcher绑定问题排查

我在测试时发现,给同一个EditText添加两个TextWatcher时,先注册的TextWatcher会被忽略,仅最后注册的监听器可正常运行,示例代码如下:

myEditText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(...) {}
            override fun onTextChanged(...) {}
            override fun afterTextChanged(s: Editable) { // first logic here}
        })

随后我又为myEditText添加了第二个TextWatcher:

myEditText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(...) {}
            override fun onTextChanged(...) {}
            override fun afterTextChanged(s: Editable) { // second logic here}
        })

此时第一个监听器的逻辑被忽略,仅第二个逻辑可正常执行,请问是否有方法可让两个监听器同时生效?
如果有使用过hbb20 ccp库的开发者,也麻烦帮忙查看相关问题提供帮助,提前感谢!

问题更新

实际问题出在业务逻辑而非多个TextWatcher本身,两个监听器的逻辑分别以不同条件更新同一个变量,错误代码示例如下:

button1.isEnable = s.toString().length == 2  // in first TextWatcher
button1.isEnable = s.toString().length == 3  // in second TextWatcher

第二个监听器的赋值结果覆盖了第一个的赋值,才导致出现第一个监听器失效的假象。

最终结论

单个EditText绑定多个TextWatcher本身运行完全正常,本次问题由个人业务逻辑错误导致,感谢所有提供帮助的开发者!


内容的提问来源于stack exchange,提问作者foseja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:00