Взаимодействие с другими фрагментами

Чтобы многократно использовать компоненты фрагментов, необходимо создавать полностью модульные и автономные фрагменты, компоненты которых содержат собственную разметку и логику. Создав автономные фрагменты, вы можете подключать их в явлениях в соответствии с логикой приложения, чтобы реализовать композитный интерфейс.

Часто возникает необходимость организовать взаимодействие одного фрагмента с другим, например заменить содержимое элемента в ответ на действие пользователя. Все взаимодействия фрагментов осуществляются с помощью явлений. Два фрагмента никогда не должны взаимодействовать друг с другом напрямую.

Определение интерфейса взаимодействия

Чтобы разрешить фрагменту взаимодействовать с явлением, нужно определить интерфейс в классе фрагмента. Реализация интерфейса фрагмента происходит в методе onAttach().

Ниже приведен пример взаимодействия фрагмента с явлением:

Теперь фрагмент может передавать сообщения в явление с помощью метода onArticleSelected(), используя объект mCallback – экземпляр интерфейса OnHeadlineSelectedListener.

К примеру, следующий метод фрагмента вызывается при нажатии на пункт списка. Фрагмент использует интерфейс обратного вызова для доставки события в явление:

Реализация интерфейса взаимодействия

Для получения события обратного вызова от фрагмента, явление должно реализовать интерфейс, описанный в классе фрагмента.

Пример реализации интерфейса:

Доставка сообщения фрагменту

Родительское явление может доставлять сообщения фрагменту, захватывая объект типа Fragment с помощью метода findFragmentById(), а затем вызывать публичные методы данного фрагмента.

Представьте, к примеру, что явление, представленное выше, может включать в себя другие фрагменты, которые используются для отображения на экране некоторых данных. В данном случае, явление может передать полученные данные, другому фрагменту, чтобы он их отобразил:

Добавить комментарий