# NavBackStackEntry

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

*** ** * ** ***


```
public final class NavBackStackEntry implements LifecycleOwner, ViewModelStoreOwner, HasDefaultViewModelProviderFactory, SavedStateRegistryOwner
```

<br />

*** ** * ** ***

Representation of an entry in the back stack of a `https://developer.android.com/reference/androidx/navigation/NavController`. The `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`, `https://developer.android.com/reference/androidx/lifecycle/ViewModelStore`, and `https://developer.android.com/reference/androidx/savedstate/SavedStateRegistry` provided via this object are valid for the lifetime of this destination on the back stack: when this destination is popped off the back stack, the lifecycle will be destroyed, state will no longer be saved, and ViewModels will be cleared.

## Summary

| ### Public methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#equals(kotlin.Any)(https://developer.android.com/reference/java/lang/Object.html other)` |
| `final https://developer.android.com/reference/androidx/savedstate/SavedState` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getArguments()()` The arguments used for this entry. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getDefaultViewModelCreationExtras()()` The default `https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` to pass into `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory#create(kotlin.reflect.KClass,androidx.lifecycle.viewmodel.CreationExtras)` when no overriding `https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` are provided. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getDefaultViewModelProviderFactory()()` The default `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` to use when no custom `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` is provided to the `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDestination` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getDestination()()` |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getId()()` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getLifecycle()()` {@inheritDoc} |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getSavedStateHandle()()` The `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` for this entry. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedStateRegistry` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getSavedStateRegistry()()` The `https://developer.android.com/reference/androidx/savedstate/SavedStateRegistry` owned by this `https://developer.android.com/reference/androidx/savedstate/SavedStateRegistryOwner`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelStore` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#getViewModelStore()()` {@inheritDoc} |
| `int` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#hashCode()()` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#toString()()` |

| ### Extension functions |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavBackStackEntryKt.https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#(androidx.navigation.NavBackStackEntry).toRoute()( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry receiver )` Returns route as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute()` |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavBackStackEntryKt.https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#(androidx.navigation.NavBackStackEntry).toRoute(kotlin.reflect.KClass)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> route )` Returns route as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute(kotlin.reflect.KClass)` |

## Public methods

### equals

```
public boolean equals(Object other)
```

### getArguments

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

```
public final SavedState getArguments()
```

The arguments used for this entry. Note that the arguments of a NavBackStackEntry are immutable and defined when you `navigate()` to the destination - changes you make to this SavedState will not be reflected in future calls to this property.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/savedstate/SavedState` | The arguments used when this entry was created |

### getDefaultViewModelCreationExtras

```
public @NonNull CreationExtras getDefaultViewModelCreationExtras()
```

The default `https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` to pass into `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory#create(kotlin.reflect.KClass,androidx.lifecycle.viewmodel.CreationExtras)` when no overriding `https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` are provided.

### getDefaultViewModelProviderFactory

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

```
public @NonNull ViewModelProvider.Factory getDefaultViewModelProviderFactory()
```

The default `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` to use when no custom `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` is provided to the `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider`.

### getDestination

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

```
public final @NonNull NavDestination getDestination()
```

### getId

```
public final @NonNull String getId()
```

### getLifecycle

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

```
public @NonNull Lifecycle getLifecycle()
```

{@inheritDoc}

If the `https://developer.android.com/reference/androidx/navigation/NavHost` has not called `https://developer.android.com/reference/androidx/navigation/NavHostController#setLifecycleOwner(androidx.lifecycle.LifecycleOwner)`, the Lifecycle will be capped at `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#CREATED`.

### getSavedStateHandle

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

```
@MainThread
public final @NonNull SavedStateHandle getSavedStateHandle()
```

The `https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle` for this entry.

### getSavedStateRegistry

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

```
public @NonNull SavedStateRegistry getSavedStateRegistry()
```

The `https://developer.android.com/reference/androidx/savedstate/SavedStateRegistry` owned by this `https://developer.android.com/reference/androidx/savedstate/SavedStateRegistryOwner`.

### getViewModelStore

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

```
public @NonNull ViewModelStore getViewModelStore()
```

{@inheritDoc}

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if called before the `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#lifecycle()` has moved to `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#CREATED` or before the `https://developer.android.com/reference/androidx/navigation/NavHost` has called `https://developer.android.com/reference/androidx/navigation/NavHostController#setViewModelStore(androidx.lifecycle.ViewModelStore)`. |

### hashCode

```
public int hashCode()
```

### toString

```
public @NonNull String toString()
```

## Extension functions

### NavBackStackEntryKt.toRoute

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

```
public final @NonNull T <T extends Object> NavBackStackEntryKt.toRoute(
    @NonNull NavBackStackEntry receiver
)
```

Returns route as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute()`

Extrapolates arguments from `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#arguments()` and recreates object `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute()`

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html>` | the entry's `https://developer.android.com/reference/androidx/navigation/NavDestination#route()` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | A new instance of this entry's `https://developer.android.com/reference/androidx/navigation/NavDestination#route()` as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute()` |

### NavBackStackEntryKt.toRoute

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

```
public final @NonNull T <T extends Object> NavBackStackEntryKt.toRoute(
    @NonNull NavBackStackEntry receiver,
    @NonNull KClass<@NonNull ?> route
)
```

Returns route as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute(kotlin.reflect.KClass)`

Extrapolates arguments from `https://developer.android.com/reference/androidx/navigation/NavBackStackEntry#arguments()` and recreates object `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute(kotlin.reflect.KClass)`

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> route` | the entry's `https://developer.android.com/reference/androidx/navigation/NavDestination#route()` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | A new instance of this entry's `https://developer.android.com/reference/androidx/navigation/NavDestination#route()` as an object of type `https://developer.android.com/reference/androidx/navigation/package-summary#(androidx.navigation.NavBackStackEntry).toRoute(kotlin.reflect.KClass)` |