有什麼方法可以從android中的View
中刪除監聽器?我有一個Checkbox
,我附上了CheckChangedListener
。問題在於調用setChecked()
會導致我的偵聽器觸發。從android中的視圖中刪除監聽器
如果我不能只是刪除一個監聽器,有沒有辦法阻止監聽器在我手動調用setChecked()
而不是從觸摸事件中檢查時觸發?
有什麼方法可以從android中的View
中刪除監聽器?我有一個Checkbox
,我附上了CheckChangedListener
。問題在於調用setChecked()
會導致我的偵聽器觸發。從android中的視圖中刪除監聽器
如果我不能只是刪除一個監聽器,有沒有辦法阻止監聽器在我手動調用setChecked()
而不是從觸摸事件中檢查時觸發?
那麼,我找到了答案。這似乎沒有記錄在任何地方,但我經歷了View
類的代碼,並且如果您將null傳遞給setClickListener方法,它將刪除該偵聽器。
checkbox.setOnCheckChangedListener(null);
這應該適用於任何事件監聽器。
在調用setChecked()
之前,您可以嘗試將偵聽器設置爲不執行任何操作的偵聽器,然後再將有用的偵聽器返回。
你爲什麼得到checkChangeListener
?如果你使用onClicklListener
它可能適合你?
你只需使用removeListener(this)。我在這裏錯過了什麼嗎?
我有類似的問題,與微調視圖。我的解決方案是創建一個類成員變量,我檢查OnItemSelected
方法。在以編程方式更改Spinner的內容/選擇之前,我將此變量設置爲true
。當OnItemSelected
發生火災時,如果變量爲true
,我將其更改爲false
而只是return
而不做任何工作。這個缺點是它使得故障排除變得困難,因爲這個變量被設置在我的代碼中。
對使用無證功能要小心,它們可以隨時更改。 – 2011-01-09 20:45:57
我不會完全稱之爲「無證的功能」。如果視圖支持給定類型的單個偵聽器,並且您將該偵聽器設置爲null,那麼您還會期望發生什麼? :) – adamp 2011-01-09 21:19:15