从android中的视图中删除一个监听器

时间:2011-01-09 20:03:12

标签: android view checkbox listener

有没有办法从android中的View中删除监听器?我有Checkbox我附加了CheckChangedListener。问题是在其上调用setChecked()会导致我的侦听器触发。

如果我不能只删除一个监听器,那么当我手动调用setChecked()而不是从触摸事件中检查时,是否有办法防止监听器触发?

5 个答案:

答案 0 :(得分:60)

好吧,我找到了答案。这似乎没有记录在任何地方,但我浏览了View类的代码,如果你将null传递给setClickListener方法,它将删除监听器。

checkbox.setOnCheckChangedListener(null);

这适用于任何事件监听器。

答案 1 :(得分:6)

为什么你有checkChangeListener?如果您使用onClicklListener它可能适合您?

答案 2 :(得分:2)

您可以尝试将侦听器设置为在调用setChecked()之前不执行任何操作的侦听器,然后再将有用的侦听器放回。

答案 3 :(得分:0)

我在Spinner视图中遇到了类似的问题。我的解决方案是创建一个我在OnItemSelected方法中检查的类成员变量。在以编程方式更改Spinner的内容/选择之前,我将此变量设置为true。当OnItemSelected触发时,如果变量为true,我会将其更改为false而只是return而不做任何工作。这样做的缺点是它使故障排除变得困难,因为这个变量在我的整个代码中都被设置了。

答案 4 :(得分:-4)

您只需使用removeListener(this)。我在这里错过了什么吗?