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
相关产品推荐
相关产品推荐

