Android|Android TextWatcher内容监听死循环案例详解
Android TextWatcher内容监听死循环
【Android|Android TextWatcher内容监听死循环案例详解】
TextWatcher如何避免在afterTextChanged中调用setText后导致死循环,今天在用TextView时,添加了addTextChangedListener方法监听内容改变,在afterTextChanged方法中又执行了setText方法,结果造成afterTextChanged方法再次调用,然后setText,因此造成了死循环的问题。列出此问题,以备后忘。
先贴Google文档原文说明:
/** * This method is called to notify you that, somewhere within *根据文档说明意思就是调用setText之前暂时去掉此监听器, 然后再恢复添加自身即可.s
, the text has been changed. * It is legitimate to make further changes tos
from * this callback, but be careful not to get yourself into an infinite * loop, because any changes you make will cause this method to be * called again recursively. * (You are not told where the change took place because other * afterTextChanged() methods may already have made other changes * and invalidated the offsets. But if you need to know here, * you can use {@link Spannable#setSpan} in {@link #onTextChanged} * to mark your place and then look up from here where the span * ended up. */public void afterTextChanged(Editable s);
如下:
xxxEdit.addTextChangedListener(new TextWatcher() {@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }@Override public void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {xxxEdit.removeTextChangedListener(this); xxxEdit.setText("新取值"); xxxEdit.addTextChangedListener(this); }});
到此这篇关于Android TextWatcher内容监听死循环案例详解的文章就介绍到这了,更多相关Android TextWatcher内容监听死循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备