Join Albert Lo for an in-depth discussion in this video Understand nav structure using fragments, part of Android Development: Modern Android UI Design Elements.
- [Male Voiceover] In terms of app navigation, there are two ways to use the side navigation drawer. The first way is to have all navigation drawer items start an activity when tapping on a navigation drawer item as indicated by this diagram. When we slide out the navigation drawer and we tap on an item, it will start the corresponding activity. The other way of app navigation is to start a fragment when the side navigation drawer item is tapped as indicated by this diagram. We create four fragments, each one corresponding to side navigation drawer item and when we tap on a side navigation drawer item it will start the corresponding fragment.
The advantage of using fragments in this way is that you can reuse the same activity i.e. the main navigation drawer activity for showing the different screens when tapping on the side navigation drawer item. As a side note, this is one of the better use cases of fragments. Currently in the industry, there are two schools of thought regarding how to use fragments. The first school of thought is two have one single activity and to have it call fragments everywhere else. The other school of thought is to not use fragments at all because it brings with it a different set of complications in terms of managing the back stack.
A reasonable middle ground would be what we are going to do here. The fragments used in the side navigation drawer for our purposes are what I call leaf notes. They are last in the chain and do not start any additional fragments. That way the fragments used here avoids the problem of having to manage the fragment back stack. In other words, when I press back on the fragment I do not have to create nor manage the back stack therefore I recommend using fragments in scenarios where pressing back returns directly to an activity.
- Creating a custom layout with XML
- Setting up OnClick handlers
- Making API calls
- Creating custom views
- Implementing ViewHolder objects
- Signing certificates
- Adding a checkbox