Связь между фрагментами применяется к вложенным фрагментам?
На сайте разработчиков Android есть отличная статья о том, как использовать интерфейсы для связи между:
- A
Fragment
и его хостинг Activity
- Два
Fragment
, размещенные тем же Activity
Я пытаюсь применить это понятие к вложенным фрагментам. В частности, getActivity()
или Fragment#onAttach(Activity)
сообщают вам, что Activity
размещает Fragment
.
Что эквивалентно в случае вложенных фрагментов? Как "ребенок" Fragment
знает, что "родительский" Fragment
он включен? И, не зная этого, как ребенок Fragment
передает события до своего родителя Fragment
?
Очевидным способом является передача намерений из дочернего Fragment
и родительский Fragment
прослушивать широковещательную передачу, но я бы предпочел использовать подход interface
.
Ответы
Ответ 1
Оказывается, существует метод getParentFragment(), предназначенный для обработки вложенных фрагментов. Он доступен на android.app.Fragment
из API 17, но может использоваться в более старых версиях с помощью android.support.v4.app.Fragment
.
Не могу поверить, что я пропустил этот API!
EDIT:
Я столкнулся с этим gist, который делает этот процесс определения родительского компонента (будь то Fragment
или Activity
) простым, элегантным и безопасным!