Могу ли я использовать статический метод для добавления OnClickListener в Java
Можно ли добавить onClickListener в статический метод?
Я пытаюсь создать вспомогательный класс и внести некоторые общие изменения в Crouton (реализация Бена Вейса, основанная на статье Кирилла Моттье). У меня действительно была разветвленная версия (где я изменил исходный код), но я пытаюсь сократить библиотечные проекты, от которых я зависел, вместо этого выбрав включить флягу, которую он предоставляет в Maven, но класс установлен как final
поэтому я не могу продлить это оттуда.
Что я сделал, это:
public class CroutonEx {
static Crouton crouton;
...
public static Crouton makeDismissOnClick(Crouton crouton) {
CroutonEx.crouton = crouton;
return crouton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Crouton.hide(CroutonEx.crouton);
}
});
}
}
Мои вопросы:
когда
onClick(View v)
будет запущен, будет ли он скрывать гренок, хранящийся в данный момент вCroutonEx.crouton
или тот, на который он ссылался в тот момент, когда слушатель был зарегистрирован? То есть, в моем случае, это всегда будет один и тот же (Crouton отображается сразу после установки слушателя, и только в течение нескольких секунд, и только по одному за раз), но гарантируется ли это в общем случае (с в отношении какого объекта в памяти он будет ссылаться)?даже если это работает, это явно не идеальный способ; хотя я сомневаюсь, что это вызовет проблему в данном конкретном случае (я не могу думать о том, как несколько потоков будут обращаться к этому методу одновременно (гренки будут добавляться только в основной поток / поток пользовательского интерфейса)), есть ли лучший способ добавить слушателей в служебный класс, или это вообще не рекомендуется?
Спасибо!
(Хотя это для проекта Android, я не добавил тег, так как не думал, что он уместен.)