有没有办法从android中的View
中删除监听器?我有Checkbox
我附加了CheckChangedListener
。问题是在其上调用setChecked()
会导致我的侦听器触发。
如果我不能只删除一个监听器,那么当我手动调用setChecked()
而不是从触摸事件中检查时,是否有办法防止监听器触发?
答案 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)。我在这里错过了什么吗?