【发布时间】:2011-06-06 04:48:21
【问题描述】:
有没有办法从android中的View中删除一个监听器?我有一个Checkbox,我附加了一个CheckChangedListener。问题是在它上面调用setChecked() 会导致我的监听器触发。
如果我不能只删除一个监听器,有没有办法阻止监听器在我手动调用 setChecked() 而不是从触摸事件中检查时触发?
【问题讨论】:
标签: android view checkbox listener
有没有办法从android中的View中删除一个监听器?我有一个Checkbox,我附加了一个CheckChangedListener。问题是在它上面调用setChecked() 会导致我的监听器触发。
如果我不能只删除一个监听器,有没有办法阻止监听器在我手动调用 setChecked() 而不是从触摸事件中检查时触发?
【问题讨论】:
标签: android view checkbox listener
我在 Spinner 视图中遇到过类似的问题。我的解决方案是创建一个在OnItemSelected 方法中检查的类成员变量。在我以编程方式更改 Spinner 的内容/选择之前,我将此变量设置为 true。当OnItemSelected 触发时,如果变量是true,我将其更改为false 并且只是return 而不做任何工作。这样做的缺点是它使故障排除变得困难,因为这个变量在我的代码中全部设置。
【讨论】:
您只需使用 removeListener(this)。我在这里遗漏了什么吗?
【讨论】:
嗯,我找到了答案。这似乎没有在任何地方记录,但我浏览了 View 类的代码,如果您将 null 传递给 setClickListener 方法,它将删除侦听器。
checkbox.setOnCheckChangedListener(null);
这应该适用于任何事件监听器。
【讨论】:
为什么你有checkChangeListener?如果您使用onClicklListener,它可能对您有用吗?
【讨论】:
您可以尝试在调用setChecked() 之前将侦听器设置为不执行任何操作的侦听器,然后再将有用的侦听器放回去。
【讨论】: