# NavController

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

*** ** * ** ***

Common/AllAndroid/JVMJavaScript
- Cmn

  ```
  open class NavController
  ```
Known direct subclasses [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` | 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. |

Known indirect 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. |

*** ** * ** ***

NavController manages app navigation within a `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`.

Apps will generally obtain a controller directly from a host, or by using one of the utility methods on the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigation` class rather than create a controller directly.

Navigation flows and destinations are determined by the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` owned by the controller. These graphs are typically [inflated](https://developer.android.com/reference/androidx/navigation/NavInflater) from an Android resource, but, like views, they can also be constructed or combined programmatically or for the case of dynamic navigation structure. (For example, if the navigation structure of the application is determined by live data obtained' from a remote server.)

## Summary

| ### Nested types |
|---|
| `fun interface https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` OnDestinationChangedListener receives a callback when the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or its arguments change. |

| ### Constants |
|---|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#KEY_DEEP_LINK_INTENT()` The `https://developer.android.com/reference/android/content/Intent.html` that triggered a deep link to the current destination. | android |

| ### Public companion functions |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkSaveStateControl https://developer.android.com/reference/kotlin/androidx/navigation/NavController#enableDeepLinkSaveState(kotlin.Boolean)(saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` By default, `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#handleDeepLink(androidx.navigation.NavDeepLinkRequest)` will automatically add calls to `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` with a `saveState` of `true` when the deep link takes you to another graph (e.g., a different navigation graph than the one your start destination is in). | Cmn android |

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

| ### Public functions |
|---|---|---|
| `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 |

| ### Public properties |
|---|---|---|
| `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 |

| ### Extension functions |
|---|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/navigation/ExperimentalBrowserHistoryApi https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).bindToBrowserNavigation(kotlin.Function1)( getBackStackEntryRoute: ((entry: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? )` Binds the browser window state to the given navigation controller. | JS |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.[createGraph](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Int,kotlin.Int,kotlin.Function1))( id: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, startDestination: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` **This function is deprecated.** Use routes to create your NavGraph instead | android |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.[createGraph](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Int,kotlin.Int,kotlin.Function1))( id: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, startDestination: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` **This function is deprecated.** Use routes to create your dynamic NavGraph instead | android |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.String,kotlin.String,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.String,kotlin.String,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations | android |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>?, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>>, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>?, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>>, builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations | android |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>?, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>>, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)( startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>?, typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>>, builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations | android |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).navigateUp(androidx.navigation.ui.AppBarConfiguration)(appBarConfiguration: https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)` Handles the Up button by delegating its behavior to the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`. | android |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).navigateUp(androidx.customview.widget.Openable)(drawerLayout: https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable?)` Handles the Up button by delegating its behavior to the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`. | android |
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).currentBackStackEntryAsState()()` Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).currentBackStackEntryAsState()()` Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State`. | android |

## Constants

### KEY_DEEP_LINK_INTENT

android

```
const val KEY_DEEP_LINK_INTENT: String
```

The `https://developer.android.com/reference/android/content/Intent.html` that triggered a deep link to the current destination.

## Public companion functions

### enableDeepLinkSaveState

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

```
@NavDeepLinkSaveStateControl
fun enableDeepLinkSaveState(saveState: Boolean): Unit
```

By default, `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#handleDeepLink(androidx.navigation.NavDeepLinkRequest)` will automatically add calls to `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` with a `saveState` of `true` when the deep link takes you to another graph (e.g., a different navigation graph than the one your start destination is in).

You can disable this behavior by passing `false` for `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.Companion#enableDeepLinkSaveState(kotlin.Boolean)`.

## Public constructors

### NavController

Cmn

```
NavController()
```

### NavController

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

```
NavController(context: Context)
```

## Public functions

### addOnDestinationChangedListener

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

```
open fun addOnDestinationChangedListener(
    listener: NavController.OnDestinationChangedListener
): Unit
```

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.

The current destination, if any, will be immediately sent to your listener.

| Parameters |
|---|---|
| `listener: https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` | the listener to receive events |

### clearBackStack

Cmn android

```
@MainThread
inline fun <T : Any> clearBackStack(): Boolean
```

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`.

| Parameters |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html>` | The route from the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` of the destination previously used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` with a `saveState`value of `true`. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the saved state of the stack associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack()` was cleared. |

### clearBackStack

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

```
@MainThread
fun clearBackStack(destinationId: @IdRes Int): Boolean
```

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`.

| Parameters |
|---|---|
| `destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The ID of the destination previously used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` with a `saveState`value of `true` |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the saved state of the stack associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Int)` was cleared. |

### clearBackStack

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

```
@MainThread
fun <T : Any> clearBackStack(route: KClass<T>): Boolean
```

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`.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>` | The route from the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` of the destination previously used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` with a `saveState`value of `true`. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the saved state of the stack associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.reflect.KClass)` was cleared. |

### clearBackStack

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

```
@MainThread
fun <T : Any> clearBackStack(route: T): Boolean
```

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`.

| Parameters |
|---|---|
| `route: T` | The route from an Object of the destination previously used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` with a `saveState`value of `true`. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the saved state of the stack associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.Any)` was cleared. |

### clearBackStack

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

```
@MainThread
fun clearBackStack(route: String): Boolean
```

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`.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The route of the destination previously used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` with a `saveState` value of `true`. May contain filled in arguments as long as it is exact match with route used with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()`. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the saved state of the stack associated with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#clearBackStack(kotlin.String)` was cleared. |

### createDeepLink

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

```
open fun createDeepLink(): NavDeepLinkBuilder
```

Create a deep link to a destination within this NavController.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkBuilder` | a `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkBuilder` suitable for constructing a deep link |

### getBackStackEntry

Cmn android

```
inline fun <T : Any> getBackStackEntry(): NavBackStackEntry
```

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`.

This is always safe to use with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#parent()` or grandparent navigation graphs as these destinations are guaranteed to be on the back stack.

| Parameters |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html>` | route from the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` of a destination that exists on the back stack. The target NavBackStackEntry's `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination` must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the destination is not on the back stack |

### getBackStackEntry

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

```
open fun getBackStackEntry(destinationId: @IdRes Int): NavBackStackEntry
```

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a destination id.

This is always safe to use with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#parent()` or grandparent navigation graphs as these destinations are guaranteed to be on the back stack.

| Parameters |
|---|---|
| `destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | ID of a destination that exists on the back stack |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the destination is not on the back stack |

### getBackStackEntry

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

```
fun <T : Any> getBackStackEntry(route: KClass<T>): NavBackStackEntry
```

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`.

This is always safe to use with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#parent()` or grandparent navigation graphs as these destinations are guaranteed to be on the back stack.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>` | route from the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` of destination `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#getBackStackEntry(kotlin.reflect.KClass)` that exists on the back stack. The target NavBackStackEntry's `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination` must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the destination is not on the back stack |

### getBackStackEntry

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

```
fun <T : Any> getBackStackEntry(route: T): NavBackStackEntry
```

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a route from an Object.

This is always safe to use with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#parent()` or grandparent navigation graphs as these destinations are guaranteed to be on the back stack.

| Parameters |
|---|---|
| `route: T` | route from an Object of a destination that exists on the back stack. The target NavBackStackEntry's `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination` must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the destination is not on the back stack |

### getBackStackEntry

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

```
fun getBackStackEntry(route: String): NavBackStackEntry
```

Gets the topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` for a route.

This is always safe to use with `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#currentDestination()` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#parent()` or grandparent navigation graphs as these destinations are guaranteed to be on the back stack.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | route of a destination that exists on the back stack. May contain filled in arguments as long as it is exact match with route used to navigate. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the destination is not on the back stack |

### getViewModelStoreOwner

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

```
open fun getViewModelStoreOwner(navGraphId: @IdRes Int): ViewModelStoreOwner
```

Gets the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner` for a NavGraph. This can be passed to `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider` to retrieve a ViewModel that is scoped to the navigation graph - it will be cleared when the navigation graph is popped off the back stack.

| Parameters |
|---|---|
| `navGraphId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | ID of a NavGraph that exists on the back stack |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if called before the `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost` has called `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController#setViewModelStore(androidx.lifecycle.ViewModelStore)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the NavGraph is not on the back stack |

### handleDeepLink

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

```
@MainThread
open fun handleDeepLink(intent: Intent?): Boolean
```

Checks the given Intent for a Navigation deep link and navigates to the deep link if present. This is called automatically for you the first time you set the graph if you've passed in an `https://developer.android.com/reference/android/app/Activity.html` as the context when constructing this NavController, but should be manually called if your Activity receives new Intents in `https://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)`.

The types of Intents that are supported include:

Intents created by `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkBuilder` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#createDeepLink()`. This assumes that the current graph shares the same hierarchy to get to the deep linked destination as when the deep link was constructed. Intents that include a `https://developer.android.com/reference/android/content/Intent.html#getData()`. This Uri will be checked against the Uri patterns in the `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink` added via `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#addDeepLink(kotlin.String)`.

The `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` should be set before calling this method.

| Parameters |
|---|---|
| `intent: https://developer.android.com/reference/android/content/Intent.html?` | The Intent that may contain a valid deep link |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the navigation controller found a valid deep link and navigated to it. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if deep link cannot be accessed from the current destination |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#addDeepLink(kotlin.String)` |   |

### handleDeepLink

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

```
@MainThread
fun handleDeepLink(request: NavDeepLinkRequest): Boolean
```

Checks the given NavDeepLinkRequest for a Navigation deep link and navigates to the destination if present.

The `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` should be set before calling this method.

| Parameters |
|---|---|
| `request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest` | The request that contains a valid deep link, an action or a mimeType. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the navigation controller found a valid deep link and navigated to it. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if deep link cannot be accessed from the current destination |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#addDeepLink(kotlin.String)` |   |

### navigate

Cmn

```
@MainThread
open fun navigate(deepLink: NavUri): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri` | deepLink to the destination reachable from the current NavGraph |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(deepLink: Uri): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/android/net/Uri.html` | deepLink to the destination reachable from the current NavGraph |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(directions: NavDirections): Unit
```

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`

| Parameters |
|---|---|
| `directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections` | directions that describe this navigation operation |

### navigate

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

```
@MainThread
open fun navigate(request: NavDeepLinkRequest): Unit
```

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`. `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest` | deepLinkRequest to the destination reachable from the current NavGraph |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given deep link request is invalid |

### navigate

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

```
@MainThread
open fun navigate(resId: @IdRes Int): Unit
```

Navigate to a destination from the current navigation graph. This supports both navigating via an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` and directly navigating to a destination.

| Parameters |
|---|---|
| `resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` id or a destination id to navigate to |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if there is no current navigation node |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the desired destination cannot be found from the current destination |

### navigate

Cmn

```
@MainThread
open fun navigate(deepLink: NavUri, navOptions: NavOptions?): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri` | deepLink to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(deepLink: Uri, navOptions: NavOptions?): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/android/net/Uri.html` | deepLink to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(directions: NavDirections, navOptions: NavOptions?): Unit
```

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`

| Parameters |
|---|---|
| `directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections` | directions that describe this navigation operation |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |

### navigate

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

```
@MainThread
open fun navigate(directions: NavDirections, navigatorExtras: Navigator.Extras): Unit
```

Navigate via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections`

| Parameters |
|---|---|
| `directions: https://developer.android.com/reference/kotlin/androidx/navigation/NavDirections` | directions that describe this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras` | extras to pass to the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator` |

### navigate

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

```
@MainThread
open fun navigate(request: NavDeepLinkRequest, navOptions: NavOptions?): Unit
```

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`. `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest` | deepLinkRequest to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given deep link request is invalid |

### navigate

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

```
@MainThread
open fun navigate(resId: @IdRes Int, args: Bundle?): Unit
```

Navigate to a destination from the current navigation graph. This supports both navigating via an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` and directly navigating to a destination.

| Parameters |
|---|---|
| `resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` id or a destination id to navigate to |
| `args: https://developer.android.com/reference/android/os/Bundle.html?` | arguments to pass to the destination |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if there is no current navigation node |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the desired destination cannot be found from the current destination |

### navigate

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

```
@MainThread
fun <T : Any> navigate(route: T, builder: NavOptionsBuilder.() -> Unit): Unit
```

Navigate to a route from an Object in the current NavGraph. If an invalid route is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

The target NavDestination must have been created with route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`

If given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` pass in `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldRestoreState()` `true`, any args passed here as part of the route will be overridden by the restored args.

| Parameters |
|---|---|
| `route: T` | route from an Object for the destination |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptionsBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | DSL for constructing a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given route is invalid |

### navigate

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

```
@MainThread
fun navigate(route: String, builder: NavOptionsBuilder.() -> Unit): Unit
```

Navigate to a route in the current NavGraph. If an invalid route is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

If `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldRestoreState()` is `true` for the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions`, any args passed here as part of the route will be overridden by the restored args.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | route for the destination |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptionsBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | DSL for constructing a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given route is invalid |

### navigate

Cmn

```
@MainThread
open fun navigate(
    deepLink: NavUri,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/kotlin/androidx/navigation/NavUri` | deepLink to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?` | extras to pass to the Navigator |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(
    deepLink: Uri,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
): Unit
```

Navigate to a destination via the given deep link [Uri](https://developer.android.com/reference/android/net/Uri). `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `deepLink: https://developer.android.com/reference/android/net/Uri.html` | deepLink to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?` | extras to pass to the Navigator |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` |   |

### navigate

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

```
@MainThread
open fun navigate(
    request: NavDeepLinkRequest,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
): Unit
```

Navigate to a destination via the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest`. `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#hasDeepLink(androidx.navigation.NavUri)` should be called on `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` prior to calling this method to check if the deep link is valid. If an invalid deep link is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

| Parameters |
|---|---|
| `request: https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLinkRequest` | deepLinkRequest to the destination reachable from the current NavGraph |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?` | extras to pass to the Navigator |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given deep link request is invalid |

### navigate

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

```
@MainThread
open fun navigate(resId: @IdRes Int, args: Bundle?, navOptions: NavOptions?): Unit
```

Navigate to a destination from the current navigation graph. This supports both navigating via an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` and directly navigating to a destination.

If given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` pass in `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#restoreState()` `true`, any args passed here will be overridden by the restored args.

| Parameters |
|---|---|
| `resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` id or a destination id to navigate to |
| `args: https://developer.android.com/reference/android/os/Bundle.html?` | arguments to pass to the destination |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if there is no current navigation node |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the desired destination cannot be found from the current destination |

### navigate

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

```
@MainThread
fun <T : Any> navigate(
    route: T,
    navOptions: NavOptions? = null,
    navigatorExtras: Navigator.Extras? = null
): Unit
```

Navigate to a route from an Object in the current NavGraph. If an invalid route is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

The target NavDestination must have been created with route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`

If given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` pass in `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldRestoreState()` `true`, any args passed here as part of the route will be overridden by the restored args.

| Parameters |
|---|---|
| `route: T` | route from an Object for the destination |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions? = null` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras? = null` | extras to pass to the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator` |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given route is invalid |

### navigate

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

```
@MainThread
fun navigate(
    route: String,
    navOptions: NavOptions? = null,
    navigatorExtras: Navigator.Extras? = null
): Unit
```

Navigate to a route in the current NavGraph. If an invalid route is given, an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` will be thrown.

If `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldRestoreState()` is `true` for the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions`, any args passed here as part of the route will be overridden by the restored args.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | route for the destination |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions? = null` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras? = null` | extras to pass to the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator` |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the given route is invalid |

### navigate

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

```
@MainThread
open fun navigate(
    resId: @IdRes Int,
    args: Bundle?,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
): Unit
```

Navigate to a destination from the current navigation graph. This supports both navigating via an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` and directly navigating to a destination.

If given `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions` pass in `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#restoreState()` `true`, any args passed here will be overridden by the restored args.

| Parameters |
|---|---|
| `resId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | an `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#getAction(kotlin.Int)` id or a destination id to navigate to |
| `args: https://developer.android.com/reference/android/os/Bundle.html?` | arguments to pass to the destination |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | special options for this navigation operation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?` | extras to pass to the Navigator |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if navigation graph has not been set for this NavController |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the desired destination cannot be found from the current destination |

### navigateUp

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

```
@MainThread
open fun navigateUp(): Boolean
```

Attempts to navigate up in the navigation hierarchy. Suitable for when the user presses the "Up" button marked with a left (or start)-facing arrow in the upper left (or starting) corner of the app UI.

The intended behavior of Up differs from `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` when the user did not reach the current destination from the application's own task. e.g. if the user is viewing a document or link in the current app in an activity hosted on another app's task where the user clicked the link. In this case the current activity (determined by the context used to create this NavController) will be [finished](https://developer.android.com/reference/android/app/Activity#finish()) and the user will be taken to an appropriate destination in this app on its own task.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if navigation was successful, false otherwise |

### popBackStack

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

```
@MainThread
open fun popBackStack(): Boolean
```

Attempts to pop the controller's back stack. Analogous to when the user presses the system [Back](https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_BACK) button when the associated navigation host has focus.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
open fun popBackStack(destinationId: @IdRes Int, inclusive: Boolean): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The topmost destination to retain |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
open fun popBackStack(destinationId: Int, inclusive: Boolean): Boolean
```

### popBackStack

Cmn android

```
@MainThread
inline fun <T : Any> popBackStack(inclusive: Boolean, saveState: Boolean = false): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html>` | The topmost destination to retain with route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |
| `saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Boolean,kotlin.Boolean)` (note: this matching ID is true whether `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Boolean,kotlin.Boolean)` is true or false). |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
open fun popBackStack(
    destinationId: @IdRes Int,
    inclusive: Boolean,
    saveState: Boolean
): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `destinationId: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The topmost destination to retain |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |
| `saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the back stack and the state of all destinations between the current destination and the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` (note: this matching ID is true whether `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` is true or false). |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
open fun popBackStack(destinationId: Int, inclusive: Boolean, saveState: Boolean): Boolean
```

### popBackStack

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

```
@MainThread
fun <T : Any> popBackStack(
    route: KClass<T>,
    inclusive: Boolean,
    saveState: Boolean = false
): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<T>` | The topmost destination to retain with route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |
| `saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` (note: this matching ID is true whether `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` is true or false). |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
fun <T : Any> popBackStack(route: T, inclusive: Boolean, saveState: Boolean = false): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `route: T` | The topmost destination to retain with route from an Object. The target NavDestination must have been created with route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html`. |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |
| `saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether the back stack and the state of all destinations between the current destination and the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` (note: this matching ID is true whether `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` is true or false). |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### popBackStack

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

```
@MainThread
fun popBackStack(route: String, inclusive: Boolean, saveState: Boolean = false): Boolean
```

Attempts to pop the controller's back stack back to a specific destination.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The topmost destination to retain. May contain filled in arguments as long as it is exact match with route used to navigate. |
| `inclusive: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the given destination should also be popped. |
| `saveState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether the back stack and the state of all destinations between the current destination and the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.String,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.String,kotlin.Boolean,kotlin.Boolean)` (note: this matching ID is true whether `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack(kotlin.String,kotlin.Boolean,kotlin.Boolean)` is true or false). |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the stack was popped at least once and the user has been navigated to another destination, false otherwise |

### removeOnDestinationChangedListener

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

```
open fun removeOnDestinationChangedListener(
    listener: NavController.OnDestinationChangedListener
): Unit
```

Removes an `https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` from this controller. It will no longer receive callbacks.

| Parameters |
|---|---|
| `listener: https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener` | the listener to remove |

### restoreState

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

```
@CallSuper
open fun restoreState(navState: Bundle?): Unit
```

Restores all navigation controller state from a SavedState. This should be called before any call to `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)`.

State may be saved to a SavedState by calling `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#saveState()`. Restoring controller state is the responsibility of a `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`.

| Parameters |
|---|---|
| `navState: https://developer.android.com/reference/android/os/Bundle.html?` | SavedState to restore |

### restoreState

Cmn

```
@CallSuper
open fun restoreState(navState: SavedState?): Unit
```

Restores all navigation controller state from a SavedState. This should be called before any call to `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)`.

State may be saved to a SavedState by calling `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#saveState()`. Restoring controller state is the responsibility of a `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`.

| Parameters |
|---|---|
| `navState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?` | SavedState to restore |

### saveState

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

```
@CallSuper
open fun saveState(): SavedState?
```

Saves all navigation controller state to a SavedState.

State may be restored from a SavedState returned from this method by calling `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#restoreState(androidx.savedstate.SavedState)`. Saving controller state is the responsibility of a `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?` | saved state for this controller |

### setGraph

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

```
@MainThread
@CallSuper
open fun setGraph(graphResId: @NavigationRes Int): Unit
```

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified resource. Any current navigation graph data (including back stack) will be replaced.

The inflated graph can be retrieved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()`.

| Parameters |
|---|---|
| `graphResId: @https://developer.android.com/reference/kotlin/androidx/annotation/NavigationRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | resource id of the navigation graph to inflate |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navInflater()` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(kotlin.Int)` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` |   |

### setGraph

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

```
@MainThread
@CallSuper
open fun setGraph(graph: NavGraph, startDestinationArgs: Bundle?): Unit
```

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified graph. Any current navigation graph data (including back stack) will be replaced.

The graph can be retrieved later via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)`.

| Parameters |
|---|---|
| `graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | graph to set |
| `startDestinationArgs: https://developer.android.com/reference/android/os/Bundle.html?` | arguments to send to the start destination of the graph |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` |   |

### setGraph

Cmn

```
@MainThread
@CallSuper
open fun setGraph(graph: NavGraph, startDestinationArgs: SavedState?): Unit
```

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified graph. Any current navigation graph data (including back stack) will be replaced.

The graph can be retrieved later via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)`.

| Parameters |
|---|---|
| `graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | graph to set |
| `startDestinationArgs: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?` | arguments to send to the start destination of the graph |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` |   |

### setGraph

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

```
@MainThread
@CallSuper
open fun setGraph(graphResId: @NavigationRes Int, startDestinationArgs: Bundle?): Unit
```

Sets the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` to the specified resource. Any current navigation graph data (including back stack) will be replaced.

The inflated graph can be retrieved via `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()`.

| Parameters |
|---|---|
| `graphResId: @https://developer.android.com/reference/kotlin/androidx/annotation/NavigationRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | resource id of the navigation graph to inflate |
| `startDestinationArgs: https://developer.android.com/reference/android/os/Bundle.html?` | arguments to send to the start destination of the graph |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navInflater()` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(kotlin.Int)` |   |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#graph()` |   |

## Public properties

### currentBackStackEntry

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

```
open val currentBackStackEntry: NavBackStackEntry?
```

The topmost `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?` | the topmost entry on the back stack or null if the back stack is empty |

### currentBackStackEntryFlow

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

```
val currentBackStackEntryFlow: Flow<NavBackStackEntry>
```

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. If there is no active `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`, no item will be emitted.

### currentDestination

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

```
open val currentDestination: NavDestination?
```

The current destination.

### graph

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

```
open var graph: NavGraph
```

The topmost navigation graph associated with this NavController.

When this is set any current navigation graph data (including back stack) will be replaced.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if called before `setGraph()`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#setGraph(androidx.navigation.NavGraph,androidx.savedstate.SavedState)` |   |

### navInflater

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

```
open val navInflater: NavInflater
```

The `https://developer.android.com/reference/kotlin/androidx/navigation/NavInflater` for this controller.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavInflater` | inflater for loading navigation resources |

### navigatorProvider

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

```
open val navigatorProvider: NavigatorProvider
```

The NavController's `https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorProvider`. All `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator` used to construct the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` for this nav controller should be added to this navigator provider before the graph is constructed.

This can only be set before the graph is set via `setGraph()`.

Generally, the Navigators are set for you by the `https://developer.android.com/reference/kotlin/androidx/navigation/NavHost` hosting this NavController and you do not need to manually interact with the navigator provider.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | If this set called after `setGraph()` |

### previousBackStackEntry

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

```
open val previousBackStackEntry: NavBackStackEntry?
```

The previous visible `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`.

This skips over any `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` that is associated with a `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?` | the previous visible entry on the back stack or null if the back stack has less than two visible entries |

### visibleEntries

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

```
val visibleEntries: StateFlow<List<NavBackStackEntry>>
```

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. If there is no visible `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`, this will be set to an empty list.

- `CREATED` entries are listed first and include all entries that are in the process of completing their exit transition. Note that this can include entries that have been popped off the Navigation back stack.

- `STARTED` entries on the back stack are next and include all entries that are running their enter transition and entries whose destination is partially covered by a `FloatingWindow` destination

- The last entry in the list is the topmost entry in the back stack and is in the `RESUMED` state only if its enter transition has completed. Otherwise it too will be `STARTED`.

Note that the `Lifecycle` of any entry cannot be higher than the containing Activity/Fragment - if the Activity is not `RESUMED`, no entry will be `RESUMED`, no matter what the transition state is.

## Extension functions

### NavController.bindToBrowserNavigation

JS Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/BrowserHistory.kt+function:bindToBrowserNavigation)

```
@ExperimentalBrowserHistoryApi
suspend fun NavController.bindToBrowserNavigation(
    getBackStackEntryRoute: ((entry: NavBackStackEntry) -> String)? = null
): Unit
```

Binds the browser window state to the given navigation controller.

If `getBackStackEntryRoute` is null, then:

1. if a browser url contains a destination route on a start then navigates to destination

2. if a user puts a new destination route to the browser address field then navigates to the new destination

If there is a custom `getBackStackEntryRoute` implementation, then we don't have knowledge how to parse urls to support direct navigation via browser address input. In that case, it should be done on the app's side:

```kotlin
window.addEventListener("popstate") { event ->
    event as PopStateEvent
    if (event.state == null) { // empty state means manually entered address
        val url = window.location.toString()
        navController.navigate(...)
    }
}
```

| Parameters |
|---|---|
| `getBackStackEntryRoute: ((entry: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null` | An optional function that returns the route to show for a given `https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry`. |

### NavController.createGraph

android Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavController.android.kt+function:createGraph)

```
inline fun NavController.[createGraph](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Int,kotlin.Int,kotlin.Function1))(
    id: @IdRes Int = 0,
    startDestination: @IdRes Int,
    builder: NavGraphBuilder.() -> Unit
): NavGraph
```

> [!CAUTION]
> **This function is deprecated.**   
> Use routes to create your NavGraph instead, use this instead:
>
> ```kotlin
> createGraph(startDestination = startDestination.toString(), route = id.toString()) { builder.invoke() }
> ```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph`

| Parameters |
|---|---|
| `id: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = 0` | the graph's unique id |
| `startDestination: @https://developer.android.com/reference/kotlin/androidx/annotation/IdRes https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the route for the start destination |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.createGraph

android Artifact: [androidx.navigation:navigation-dynamic-features-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/dynamicfeatures/NavController.kt+function:createGraph)

```
inline fun NavController.[createGraph](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#(androidx.navigation.NavController).createGraph(kotlin.Int,kotlin.Int,kotlin.Function1))(
    id: @IdRes Int = 0,
    startDestination: @IdRes Int,
    builder: DynamicNavGraphBuilder.() -> Unit
): NavGraph
```

> [!CAUTION]
> **This function is deprecated.**   
> Use routes to create your dynamic NavGraph instead, use this instead:
>
> ```kotlin
> createGraph(startDestination = startDestination.toString(), route = id.toString()) { builder.invoke() }
> ```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations

### NavController.createGraph

Cmn Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: String,
    route: String? = null,
    builder: NavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph`

| Parameters |
|---|---|
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | the route for the start destination |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | the route for the graph |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.createGraph

android Artifact: [androidx.navigation:navigation-dynamic-features-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/dynamicfeatures/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: String,
    route: String? = null,
    builder: DynamicNavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations

### NavController.createGraph

Cmn Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: Any,
    route: KClass<*>? = null,
    typeMap: Map<KType, NavType<*>> = emptyMap(),
    builder: NavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph`

| Parameters |
|---|---|
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html` | the starting destination's route from an Object for this NavGraph. The respective NavDestination must be added as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` in order to match. |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>? = null` | the graph's unique route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | A mapping of KType to custom NavType\<\*\> in the `https://developer.android.com/reference/kotlin/androidx/navigation/package-summary#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/package-summary#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)` does not use custom NavTypes. |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.createGraph

android Artifact: [androidx.navigation:navigation-dynamic-features-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/dynamicfeatures/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: Any,
    route: KClass<*>? = null,
    typeMap: Map<KType, NavType<*>> = emptyMap(),
    builder: DynamicNavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations

| Parameters |
|---|---|
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html` | the starting destination's route from an Object for this NavGraph. The respective NavDestination must be added as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` in order to match. |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>? = null` | the graph's unique route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | A mapping of KType to custom NavType\<\*\> in the `https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/package-summary#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/package-summary#(androidx.navigation.NavController).createGraph(kotlin.Any,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)` does not use custom NavTypes. |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.createGraph

Cmn Artifact: [androidx.navigation:navigation-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: KClass<*>,
    route: KClass<*>? = null,
    typeMap: Map<KType, NavType<*>> = emptyMap(),
    builder: NavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph`

| Parameters |
|---|---|
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>` | the starting destination's route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` for this NavGraph. The respective NavDestination must be added as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` in order to match. |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>? = null` | the graph's unique route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | A mapping of KType to custom NavType\<\*\> in the `https://developer.android.com/reference/kotlin/androidx/navigation/package-summary#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/package-summary#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)` does not use custom NavTypes. |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.createGraph

android Artifact: [androidx.navigation:navigation-dynamic-features-runtime](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/dynamicfeatures/NavController.kt+function:createGraph)

```
inline fun NavController.createGraph(
    startDestination: KClass<*>,
    route: KClass<*>? = null,
    typeMap: Map<KType, NavType<*>> = emptyMap(),
    builder: DynamicNavGraphBuilder.() -> Unit
): NavGraph
```

Construct a new `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` that supports dynamic navigation destinations

| Parameters |
|---|---|
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>` | the starting destination's route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` for this NavGraph. The respective NavDestination must be added as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` in order to match. |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>? = null` | the graph's unique route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |
| `typeMap: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-type/index.html, https://developer.android.com/reference/kotlin/androidx/navigation/NavType<*>> = emptyMap()` | A mapping of KType to custom NavType\<\*\> in the `https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/package-summary#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)`. May be empty if `https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/package-summary#(androidx.navigation.NavController).createGraph(kotlin.reflect.KClass,kotlin.reflect.KClass,kotlin.collections.Map,kotlin.Function1)` does not use custom NavTypes. |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the builder used to construct the graph |

### NavController.navigateUp

android Artifact: [androidx.navigation:navigation-ui](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/ui/NavController.kt+function:navigateUp)

```
fun NavController.navigateUp(appBarConfiguration: AppBarConfiguration): Boolean
```

Handles the Up button by delegating its behavior to the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController` was able to navigate up. |

### NavController.navigateUp

android Artifact: [androidx.navigation:navigation-ui](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/ui/NavController.kt+function:navigateUp)

```
fun NavController.navigateUp(drawerLayout: Openable?): Boolean
```

Handles the Up button by delegating its behavior to the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`.

This is equivalent to calling `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigateUp()` if the `https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable` layout is null.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController` was able to navigate up. |

### NavController.currentBackStackEntryAsState

Cmn Artifact: [androidx.navigation:navigation-compose](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/compose/NavHostController.kt+function:currentBackStackEntryAsState)

```
@Composable
fun NavController.currentBackStackEntryAsState(): State<NavBackStackEntry?>
```

Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. When the given navController changes the back stack due to a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` this will trigger a recompose and return the top entry on the back stack.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | a mutable state of the current back stack entry |

### NavController.currentBackStackEntryAsState

android Artifact: [androidx.navigation:navigation-compose](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/compose/NavHostController.kt+function:currentBackStackEntryAsState)

```
@Composable
fun NavController.currentBackStackEntryAsState(): State<NavBackStackEntry?>
```

Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State`. When the given navController changes the back stack due to a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(kotlin.Int)` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` this will trigger a recompose and return the top entry on the back stack.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | state of the current back stack entry |