BitNeBolt
@BitNeBolt

Стоит ли таким образом устанавливать слушатель?

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

Нормально ли использовать статический сеттер (если объект гарантированно должен быть в одном экземпляре) для статического слушателя и перед вызовом метода проверять его на нулл?

Как стоит устанавливать слушателя, если (условно) фрагмент должен создаваться в адаптере или экземпляры одного фрагмента должны использоваться несколько раз?

P.S. Возможно, что-то сформулировал слишком коряво
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Короткий ответ: Нет.
Длинный ответ:
Общение между разными активити должно происходить с помощью Intent'ов, startActivityForResult, onActivityResult.
Общение между фрагментом и активити должно происходить через аргументы фрагмента, поиска по тегу/айди и кастования фрагмента к определенному интерфейсу, getActivity() и кастования активити к определенному интерфейсу.
Общение между фрагментами, лежащими на одном уровне(лежащими в одном FragmentManager'e) должно происходить через активити и интерфейсы(фрагмент А просит у активити интерфейс Б, активити ищет фрагмент В, реализующий интерфейс Б и предоставляет его), либо через механизм TargetFragment(см get/setTargetFragment).
Общение между фрагментами, лежащими в разных фрагмент менеджерах и связанных отношением родитель-потомок(см getChildFragmentManager) должно происходить через getParentFragment + интерфейсы.

Всё это довольно сложно и запутано, но вот такой вот API.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я конечно не андроид программист, но вот в своих проектах (просто ява и ничего больше) использую https://greenrobot.org/ru-eventbus/
На мой взгляд, гораздо приятнее, чем использование Intent, если они не очень нужны.
Ну и для традиционной явы - есть несколько механизмов диспетчеризации, в том числе и через мастер-тред. Ну и не изобретать свой велосипед. Раньше пользовал guava eventbus, но этот лучше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы