@orbit070

Насколько плохо вызывать метод активити из фрагмента напрямую?

Есть активити, в которой определен метод "Открыть экран X".
Этот метод определен именно в активити, а не во фрагменте, исходя из того, что его необходимо вызывать при определенном интенте(то есть в onNewIntent перехватываю интент и вызываю этот метод).

Также есть сценарий, когда мне нужно открыть этот же экран X нажав на кнопку в одном из фрагментов. Чтобы не дублировать код метода "Открыть экран X" из активити во фрагмент логичным видится вызов этого метода из фрагмента.

Тут, собственно, вопрос: нужно ли ради этого городить интерфейс с коллбеком чтобы из фрагмента сообщить в активити о необходимости вызвать этот метод или можно просто выполнить ((MyActivity) GetActivity()).openScreenX() ? Насколько плохо так делать и чем чревато? Спасибо
  • Вопрос задан
  • 129 просмотров
Решения вопроса 2
akaish
@akaish
Стек Java\Android
Не вижу в этом ничего плохого, если фрагмент находится в FragmentManager activty и вы придерживаетесь стандартного андроидовского MVC, но надо понимать, что на разных стадиях жизни фрагмента метод getActivity() может вернуть как и ссылку на активити, так и null.
Ответ написан
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Гораздо лучше и правильнее будет выделить для навигации отдельную сущность (Router), реализовать метод в ней и воспользоваться в двух местах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tiroman
Можно использовать библиотеку EventBus и общаться между компонентами приложения событиями, снижается связность между ними, не важно фрагмент это и активити, или какой то бэкграунд сервис и та же активити
Ответ написан
Ваш ответ на вопрос

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

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