Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Introduction to Navigation

Overview

Navigation is a fundamental aspect of Android development, allowing users to move between different screens or activities within an app. Proper navigation ensures a seamless and intuitive user experience. In this tutorial, we will cover the basics of navigation in Android, including how to navigate between activities and fragments.

Navigation Components

Android provides several components to facilitate navigation:

  • Activities: Represent a single screen with a user interface.
  • Fragments: Modular sections of an activity, enabling more flexible UI designs.
  • Navigation Graph: A resource file that defines the navigation paths within an app.
  • NavController: Manages app navigation within a NavHost.

Setting Up Navigation

To set up navigation in an Android project, follow these steps:

  1. Add the Navigation component dependencies to your build.gradle file.
  2. Create a navigation graph resource file.
  3. Define navigation actions within the graph.
  4. Use the NavController to manage navigation.

Step 1: Add Dependencies

Add the following dependencies to your app-level build.gradle file:

dependencies {
  implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
  implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
}

Step 2: Create Navigation Graph

Create a new XML resource file in the res/navigation directory and define your navigation graph:

<?xml version="1.0" encoding="utf-8"?>
<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"
  app:startDestination="@id/homeFragment">

  <fragment
    android:id="@+id/homeFragment"
    android:name="com.example.app.HomeFragment"
    tools:layout="@layout/fragment_home" />

  <fragment
    android:id="@+id/detailsFragment"
    android:name="com.example.app.DetailsFragment"
    tools:layout="@layout/fragment_details">
    <action
      android:id="@+id/action_homeFragment_to_detailsFragment"
      app:destination="@id/detailsFragment" />
  </fragment>
</navigation>

Navigating Between Screens

To navigate between fragments, use the NavController in your activity or fragment:

Example

Navigate from HomeFragment to DetailsFragment:

// In HomeFragment
Button navigateButton = view.findViewById(R.id.navigateButton);
navigateButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    NavController navController = Navigation.findNavController(v);
    navController.navigate(R.id.action_homeFragment_to_detailsFragment);
  }
});

Handling Back Navigation

Android's back navigation is handled automatically when using the Navigation component. However, you can customize back navigation by overriding the onBackPressed() method in your activity:

Example

Override onBackPressed() in your activity:

@Override
public void onBackPressed() {
  NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
  if (!navController.navigateUp()) {
    super.onBackPressed();
  }
}

Conclusion

In this tutorial, we covered the basics of navigation in Android development. We discussed the key components involved in navigation, set up a navigation graph, and demonstrated how to navigate between screens and handle back navigation. Mastering navigation is crucial for creating intuitive and user-friendly Android applications.