首先说一下应用场景和问题:
项目需要加载一个listview,每个list item中有一个switch 按钮。list item中的switch 在初始化时,需要根据数据对应的boolean 值来设置switch的开关状态。我调用的是setChecked()来设置状态。switch 的开关侦听函数 为修改一个之前初始化的boolean值。
这样遇到了一个问题,就是当设置为On的switch在滑出界面的时候,再将其滑入屏幕,switch有可能自动就变为关,我查看那个依据的boolean值,也被改了。
我明明没有点击按钮,为什么switch自己就换过去了???
发现问题:
百思不得其解之后,我在工程中寻找修改那个Boolean值得代码,只有在switch的监听函数中才发现有!
只能 在修改Boolean 值处加上主动throw Exception,并try catch代码 的方式获取前前后后的调用栈。