Add Navigation Components to the Project
Navigation helps the users navigate inside the application between fragments and the activity. Navigation Component, on the other hand, is part of Android Jetpack and helps us (the developers) build navigation for component clicks, deep links and more.
Navigation Component consists of Navigation Graph, Nav Host and the Nav Controller. We will talk about them in detail throughout the article and implement it.
Navigation Component consists of Navigation Graph, Nav Host and the Nav Controller. We will talk about them in detail throughout the article and implement it.
1. First, add the dependencies to the module level
build.gradle file.implementation 'androidx.navigation:navigation-fragment-ktx:2.2.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.0'
2. Create a Nav Host
The Nav Host is a container for all the fragments to be shown on. With the help of Nav Controller, the developer can navigate the user between fragments and nested nav graphs.
<fragment android:layout_width="match_parent"
android:id="@+id/nav_host_fragment"
app:defaultNavHost="true"
app:navGraph="@navigation/main_navigation"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_height="match_parent"/>
In the above implementation, three attributes are important namely,
android:name, app:navGraph and app:defaultNavHost.android:name contains the name of the NavHostFragment. app:navGraph contains the path to the navigation graph. Set app:defaultNavHost to true which ensures appropriate behavior for back button clicks.
3. Create a Navigation Graph and add Fragments
Create a Navigation Graph with the name
main_navigation.xml inside the navigation folder. Navigation Graph contains the destinations and actions. Destinations are the fragments the user interacts with and the action shows user navigation inside the app (as shown in the figure above).<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_navigation"
app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/loginFragment"
android:name="com.gsrikar.ecommerce.ui.login.LoginFragment"
android:label="Login"
tools:layout="@layout/login_fragment" />
</navigation>
To add
Set any fragment id to the
LoginFragment to the Navigation Graph, set fragment class name to the android:name attribute and toolbar title as android:label.Set any fragment id to the
app:startDestination and this is the first and the last screen the user sees when opening the application or closing it.
Finally, you can remove the fragment transactions from the activity or other fragments like below.
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.container, LoginFragment.newInstance())
.commitNow()
}
Run the application and you should see the Login Fragment.

