Удалить слушателя из представления в Android - PullRequest
29 голосов
/ 09 января 2011

Есть ли способ удалить Слушатель из View в Android? У меня есть Checkbox, к которому я прикрепил CheckChangedListener. Проблема в том, что при вызове setChecked() на нем мой слушатель срабатывает.

Если я не могу просто удалить слушателя, есть ли способ запретить слушателю запускать, когда я вызываю setChecked() вручную, в отличие от проверки на событие касания?

Ответы [ 5 ]

60 голосов
/ 09 января 2011

Ну, я нашел ответ.Кажется, это нигде не задокументировано, но я прошел код для класса View, и если вы передадите null в методы setClickListener, он удалит слушателя.слушатель событий.

6 голосов
/ 09 января 2011

Почему у вас есть checkChangeListener?Если бы вы использовали onClicklListener, это могло бы просто работать для вас?

2 голосов
/ 09 января 2011

Вы можете попытаться настроить слушателя на тот, который ничего не делает, прежде чем вызвать setChecked(), а затем потом вернуть полезный.

0 голосов
/ 21 января 2014

У меня были похожие проблемы с представлением Spinner.Моим решением было создать переменную члена класса, которую я проверяю в методе OnItemSelected.Прежде чем я программно изменю содержимое / выбор Spinner, я устанавливаю эту переменную на true.Когда срабатывает OnItemSelected, если переменная true, я меняю ее на false и просто return, не выполняя никакой работы.Недостатком этого является то, что это затрудняет поиск и устранение неисправностей, поскольку эта переменная устанавливается во всем моем коде.

0 голосов
/ 09 февраля 2012

Вы просто используете removeListener (это). Я что-то здесь упускаю?

...