# NavHostController

Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavHostController.+class:androidx.navigation.NavHostController) Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

*** ** * ** ***

Common/AllAndroid/JVMJavaScript
- Cmn

  ```
  open class NavHostController : NavController
  ```

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.navigation.NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) ||
|   | ↳ | [androidx.navigation.NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController) |

Known direct subclasses [TestNavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/testing/TestNavHostController)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/testing/TestNavHostController` | Subclass of `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` that offers additional APIs for testing Navigation. |

*** ** * ** ***

Subclass of `https://developer.android.com/reference/kotlin/androidx/navigation/NavController` that offers additional APIs for use by a `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost` to connect the NavController to external dependencies.

Apps should generally not construct controllers, instead obtain a relevant controller directly from a navigation host via `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost#navController()` or by using one of the utility methods on the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigation` class.

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#NavHostController()()` | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#NavHostController(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html)` | android |

| ### Public functions |
|---|---|---|
| `final https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#enableOnBackPressed(kotlin.Boolean)(enabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Set whether the NavController should handle the system Back button events via the registered `https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher`. | android |
| `final https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setLifecycleOwner(androidx.lifecycle.LifecycleOwner)(owner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner)` Sets the host's `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner`. | Cmn android |
| `final https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher)(dispatcher: https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher)` Sets the host's `https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher`. | android |
| `final https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setViewModelStore(androidx.lifecycle.ViewModelStore)(viewModelStore: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore)` Sets the host's ViewModelStore used by the NavController to store ViewModels at the navigation graph level. | Cmn android |

### Inherited functions

From [androidx.navigation.NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener)(
listener: https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener
)`

Adds an `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` to this controller to receive a callback whenever the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or its arguments change.
Cmn android `inline https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack()()`

Clears any saved state associated with KClass `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack()` that was previously saved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when using a `saveState` value of `true`.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Int)(destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Clears any saved state associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Int)` that was previously saved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when using a `saveState` value of `true`.
android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.reflect.KClass)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>)`

Clears any saved state associated with KClass `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.reflect.KClass)` that was previously saved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when using a `saveState` value of `true`.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Any)(route: T)`

Clears any saved state associated with KClass `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Any)` that was previously saved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when using a `saveState` value of `true`.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.String)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`

Clears any saved state associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.String)` that was previously saved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when using a `saveState` value of `true`.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkBuilder` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#createDeepLink()()`

Create a deep link to a destination within this NavController.
android `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry()()`

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.Int)(destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a destination id.
android `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.reflect.KClass)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>)`

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.reflect.KClass)` from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`.
Cmn android `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.Any)(route: T)`

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a route from an Object.
Cmn android `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.String)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a route.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getViewModelStoreOwner(kotlin.Int)(navGraphId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Gets the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner` for a NavGraph.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#handleDeepLink(android.content.Intent)(intent: https://developer.android.com/reference/android/content/Intent.html?)`

Checks the given Intent for a Navigation deep link and navigates to the deep link if present.
android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#handleDeepLink(androidx.navigation.NavDeepLinkRequest)(request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest)`

Checks the given NavDeepLinkRequest for a Navigation deep link and navigates to the destination if present.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)(deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(android.net.Uri)(deepLink: https://developer.android.com/reference/android/net/Uri.html)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDirections)(directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections)`

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDeepLinkRequest)(request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest)`

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Int)(resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Navigate to a destination from the current navigation graph.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri,androidx.navigation.NavOptions)(deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(android.net.Uri,androidx.navigation.NavOptions)(deepLink: https://developer.android.com/reference/android/net/Uri.html, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDirections,androidx.navigation.NavOptions)(directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?)`

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDirections,androidx.navigation.Navigator.Extras)(directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections, navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras)`

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDeepLinkRequest,androidx.navigation.NavOptions)(request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?)`

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Int,android.os.Bundle)(resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, args: https://developer.android.com/reference/android/os/Bundle.html?)`

Navigate to a destination from the current navigation graph.
android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Any,kotlin.Function1)(route: T, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptionsBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)`

Navigate to a route from an Object in the current NavGraph.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.String,kotlin.Function1)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptionsBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)`

Navigate to a route in the current NavGraph.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(android.net.Uri,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
deepLink: https://developer.android.com/reference/android/net/Uri.html,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri).
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavDeepLinkRequest,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Int,android.os.Bundle,androidx.navigation.NavOptions)(resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, args: https://developer.android.com/reference/android/os/Bundle.html?, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?)`

Navigate to a destination from the current navigation graph.
android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Any,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
route: T,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a route from an Object in the current NavGraph.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.String,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a route in the current NavGraph.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Int,android.os.Bundle,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
args: https://developer.android.com/reference/android/os/Bundle.html?,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a destination from the current navigation graph.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigateUp()()`

Attempts to navigate up in the navigation hierarchy.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()()`

Attempts to pop the controller's back stack.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean)(destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Attempts to pop the controller's back stack back to a specific destination.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean)(destinationId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Cmn `inline https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Boolean,kotlin.Boolean)(inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Attempts to pop the controller's back stack back to a specific destination.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean,kotlin.Boolean)(
destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html,
saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Attempts to pop the controller's back stack back to a specific destination.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean,kotlin.Boolean)(destinationId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Cmn `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)(
route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>,
inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html,
saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Attempts to pop the controller's back stack back to a specific destination.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Any,kotlin.Boolean,kotlin.Boolean)(route: T, inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Attempts to pop the controller's back stack back to a specific destination.
Cmn android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.String,kotlin.Boolean,kotlin.Boolean)(route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Attempts to pop the controller's back stack back to a specific destination.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#removeOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener)(
listener: https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener
)`

Removes an `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` from this controller.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#restoreState(android.os.Bundle)(navState: https://developer.android.com/reference/android/os/Bundle.html?)`

Restores all navigation controller state from a SavedState.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#restoreState(androidx.savedstate.SavedState)(navState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?)`

Restores all navigation controller state from a SavedState.
Cmn `open https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#saveState()()`

Saves all navigation controller state to a SavedState.
Cmn android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(kotlin.Int)(graphResId: @https://developer.android.com/reference/kotlin/androidx/annotation/NavigationRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified resource.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,android.os.Bundle)(graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph, startDestinationArgs: https://developer.android.com/reference/android/os/Bundle.html?)`

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified graph.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)(graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph, startDestinationArgs: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?)`

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified graph.
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread
@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(kotlin.Int,android.os.Bundle)(graphResId: @https://developer.android.com/reference/kotlin/androidx/annotation/NavigationRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, startDestinationArgs: https://developer.android.com/reference/android/os/Bundle.html?)`

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified resource.
android

### Inherited properties

From [androidx.navigation.NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) `open https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentBackStackEntry()`

The topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`.
Cmn android `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry>` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentBackStackEntryFlow()`

A `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html` that will emit the currently active `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` whenever it changes.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination?` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()`

The current destination.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()`

The topmost navigation graph associated with this NavController.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavInflater` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navInflater()`

The `https://developer.android.com/reference/kotlin/androidx/navigation/NavInflater` for this controller.
android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorProvider` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigatorProvider()`

The NavController's `https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorProvider`.
Cmn android `open https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#previousBackStackEntry()`

The previous visible `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`.
Cmn android `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry>>` `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#visibleEntries()`

A `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html` that will emit the currently visible `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` whenever they change.
Cmn android

## Public constructors

### NavHostController

Cmn

```
NavHostController()
```

### NavHostController

android Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

```
NavHostController(context: Context)
```

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | context for this controller |

## Public functions

### enableOnBackPressed

android Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

```
final fun enableOnBackPressed(enabled: Boolean): Unit
```

Set whether the NavController should handle the system Back button events via the registered `https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher`.

| Parameters |
|---|---|
| `enabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the NavController should handle system Back button events. |

### setLifecycleOwner

Cmn android Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

```
final fun setLifecycleOwner(owner: LifecycleOwner): Unit
```

Sets the host's `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner`.

| Parameters |
|---|---|
| `owner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` associated with the containing `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`. |

### setOnBackPressedDispatcher

android Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

```
final fun setOnBackPressedDispatcher(dispatcher: OnBackPressedDispatcher): Unit
```

Sets the host's `https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher`. If set, NavController will register a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#onBackPressedCallback()` to handle system Back button events.

You must explicitly called `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setLifecycleOwner(androidx.lifecycle.LifecycleOwner)` before calling this method as the owner set there will be used as the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` for registering the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#onBackPressedCallback()`.

You can dynamically enable and disable whether the NavController should handle the system Back button events by calling `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#enableOnBackPressed(kotlin.Boolean)`.

| Parameters |
|---|---|
| `dispatcher: https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher` | The `https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcher` associated with the containing `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if you have not called `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setLifecycleOwner(androidx.lifecycle.LifecycleOwner)` before calling this method. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setLifecycleOwner(androidx.lifecycle.LifecycleOwner)` |   |

### setViewModelStore

Cmn android Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0)

```
final fun setViewModelStore(viewModelStore: ViewModelStore): Unit
```

Sets the host's ViewModelStore used by the NavController to store ViewModels at the navigation graph level. This is required to call `getViewModelStoreOwner` and should generally be called for you by your `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`.

You must call this method before `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)` or similar methods, because the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore` set here will be used by the created `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` items.

| Parameters |
|---|---|
| `viewModelStore: https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore` | ViewModelStore used to store ViewModels at the navigation graph level |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if this method is called when graph was already set via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)` or similar methods. |