If you look at the Communicating with Other Fragments tutorial, it says that:
All Fragment-to-Fragment communication is done through the associated
Activity. Two Fragments should never communicate directly.
The reason for this is that Fragment
s are fluid & dynamic UI components that may fade in and out of view. Only the hosting Activity
is capable of determining if a Fragment
is added to the UI or has been detached from it.
If I understood correctly, there is no modularity in this approach:
the activity needs to know everything about both the fragments it
hosts (F1
and F2
) and the fragments that are nested in F1
and F2
.
The Fragment
s are "modular" in the sense that they are totally independent & reusable UI blocks. Also, they are "modular" because their interfaces are well defined and explicitly implemented by the hosting Activity
. Anywhere you drop that Fragment
in, if the Activity
implements the callback interface defined in the Fragment
, then the Activity
"chooses" what to do depending on whether the Fragment
is added / attached to the UI or not.
If we loosely apply the MVC
way of thinking here, the hosting Activity
acts as a controller
of sorts between two views
which are the Fragment
s. Of course this is just a loose analogy, but hopefully you get the picture.
Further considerations:
There is an alternative to this approach: a method called getParentFragment()
that a nested Fragment
can use to get a reference to the "outside" Fragment
.
References:
1. Why direct communication between fragments is not recommended?.
2. Communicating with other fragments or to activity.
3. Fragment question: inter-fragment communication?.