0
0
Android Kotlinmobile~5 mins

NavHost and NavController in Android Kotlin

Choose your learning style9 modes available
Introduction

NavHost and NavController help your app move between screens smoothly. They keep track of where you are and where you want to go.

When you want to switch between different screens in your app.
When you want to handle back button presses automatically.
When you want to pass data between screens easily.
When you want to keep your navigation organized and simple.
Syntax
Android Kotlin
val navController = findNavController(R.id.nav_host_fragment)

// To navigate to a destination
navController.navigate(R.id.destinationFragment)
NavHost is a container that shows different screens (fragments) inside it.
NavController controls the navigation actions like moving forward or back.
Examples
This moves the app from the current screen to the Profile screen.
Android Kotlin
val navController = findNavController(R.id.nav_host_fragment)
navController.navigate(R.id.profileFragment)
This goes back to the previous screen in the navigation stack.
Android Kotlin
navController.popBackStack()
This navigates with data (itemId) from Home to Details screen using safe args.
Android Kotlin
val action = HomeFragmentDirections.actionHomeToDetails(itemId)
navController.navigate(action)
Sample App

This app has a button on the first screen. When you tap it, the app moves to the second screen using NavController.

Android Kotlin
class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val navController = findNavController(R.id.nav_host_fragment)

    // Navigate to second screen when button clicked
    val button = findViewById<Button>(R.id.button_navigate)
    button.setOnClickListener {
      navController.navigate(R.id.secondFragment)
    }
  }
}
OutputSuccess
Important Notes

Always define your navigation graph XML to list all screens and actions.

Use safe args plugin to pass data safely between screens.

NavController handles the back button automatically, so you don't need extra code.

Summary

NavHost shows your app screens inside one container.

NavController moves you between screens and manages back stack.

Use navigation graph XML to organize your app's navigation paths.