# NavOptions.Builder

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

*** ** * ** ***


```
public final class NavOptions.Builder
```

<br />

*** ** * ** ***

Builder for constructing new instances of NavOptions.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#Builder()()` |
| `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#Builder()()` |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#build()()` |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setEnterAnim(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int enterAnim)` Sets a custom Animation or Animator resource for the enter animation. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setExitAnim(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int exitAnim)` Sets a custom Animation or Animator resource for the exit animation. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setLaunchSingleTop(kotlin.Boolean)(boolean singleTop)` Launch a navigation target as single-top if you are making a lateral navigation between instances of the same target (e.g. detail pages about similar data items) that should not preserve history. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopEnterAnim(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int popEnterAnim)` Sets a custom Animation or Animator resource for the enter animation when popping off the back stack. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopExitAnim(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int popExitAnim)` Sets a custom Animation or Animator resource for the exit animation when popping off the back stack. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Boolean,kotlin.Boolean)(boolean inclusive, boolean saveState)` Pop up to a given destination before navigating. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Int,kotlin.Boolean,kotlin.Boolean)(@https://developer.android.com/reference/androidx/annotation/IdRes int destinationId, boolean inclusive, boolean saveState)` Pop up to a given destination before navigating. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)( @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 T> route, boolean inclusive, boolean saveState )` Pop up to a given destination before navigating. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Any,kotlin.Boolean,kotlin.Boolean)( @https://developer.android.com/reference/androidx/annotation/NonNull T route, boolean inclusive, boolean saveState )` Pop up to a given destination before navigating. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)(https://developer.android.com/reference/java/lang/String.html route, boolean inclusive, boolean saveState)` Pop up to a given destination before navigating. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)(boolean restoreState)` Whether this navigation action should restore any state previously saved by `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` or the `popUpToSaveState` attribute. |

## Public constructors

### Builder

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

```
public Builder()
```

### Builder

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

```
public Builder()
```

## Public methods

### build

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

```
public final @NonNull NavOptions build()
```

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions` | a constructed NavOptions |

### setEnterAnim

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

```
public final @NonNull NavOptions.Builder setEnterAnim(@AnimRes @AnimatorRes int enterAnim)
```

Sets a custom Animation or Animator resource for the enter animation.

Note: Animator resources are not supported for navigating to a new Activity

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int enterAnim` | Custom animation to run |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#enterAnim()` |   |

### setExitAnim

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

```
public final @NonNull NavOptions.Builder setExitAnim(@AnimRes @AnimatorRes int exitAnim)
```

Sets a custom Animation or Animator resource for the exit animation.

Note: Animator resources are not supported for navigating to a new Activity

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int exitAnim` | Custom animation to run |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#exitAnim()` |   |

### setLaunchSingleTop

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

```
public final @NonNull NavOptions.Builder setLaunchSingleTop(boolean singleTop)
```

Launch a navigation target as single-top if you are making a lateral navigation between instances of the same target (e.g. detail pages about similar data items) that should not preserve history.

| Parameters |
|---|---|
| `boolean singleTop` | true to launch as single-top |

### setPopEnterAnim

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

```
public final @NonNull NavOptions.Builder setPopEnterAnim(@AnimRes @AnimatorRes int popEnterAnim)
```

Sets a custom Animation or Animator resource for the enter animation when popping off the back stack.

Note: Animator resources are not supported for navigating to a new Activity

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int popEnterAnim` | Custom animation to run |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popEnterAnim()` |   |

### setPopExitAnim

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

```
public final @NonNull NavOptions.Builder setPopExitAnim(@AnimRes @AnimatorRes int popExitAnim)
```

Sets a custom Animation or Animator resource for the exit animation when popping off the back stack.

Note: Animator resources are not supported for navigating to a new Activity

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimRes @https://developer.android.com/reference/androidx/annotation/AnimatorRes int popExitAnim` | Custom animation to run |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popExitAnim()` |   |

### setPopUpTo

```
public final @NonNull NavOptions.Builder <T extends Object> setPopUpTo(boolean inclusive, boolean saveState)
```

Pop up to a given destination before navigating. This pops all non-matching destinations from the back stack until this destination is found.

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/lang/Object.html>` | route from a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` for destination to pop up to, clearing all intervening destinations. |
| `boolean inclusive` | true to also pop the given destination from the back stack. |
| `boolean saveState` | true if the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` as `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRouteClass()` (note: this matching ID is true if `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Boolean,kotlin.Boolean)` is true. If `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Boolean,kotlin.Boolean)` is false, this matching ID is the id of the last destination that is popped). |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRoute()` |   |
| `https://developer.android.com/reference/androidx/navigation/NavOptions#isPopUpToInclusive()` |   |

### setPopUpTo

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

```
public final @NonNull NavOptions.Builder setPopUpTo(@IdRes int destinationId, boolean inclusive, boolean saveState)
```

Pop up to a given destination before navigating. This pops all non-matching destinations from the back stack until this destination is found.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int destinationId` | The destination to pop up to, clearing all intervening destinations. |
| `boolean inclusive` | true to also pop the given destination from the back stack. |
| `boolean saveState` | true if the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same ID as `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#popUpToId()` (note: this matching ID is true if `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` is true. If `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Int,kotlin.Boolean,kotlin.Boolean)` is false, this matching ID is the id of the last destination that is popped). |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToId()` |   |
| `https://developer.android.com/reference/androidx/navigation/NavOptions#isPopUpToInclusive()` |   |

### setPopUpTo

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

```
public final @NonNull NavOptions.Builder <T extends Object> setPopUpTo(
    @NonNull KClass<@NonNull T> route,
    boolean inclusive,
    boolean saveState
)
```

Pop up to a given destination before navigating. This pops all non-matching destinations from the back stack until this destination is found.

| 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 T> route` | from the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` of the destination `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` to pop up to, clearing all intervening destinations. |
| `boolean inclusive` | true to also pop the given destination from the back stack. |
| `boolean saveState` | true if the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same route from `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html` as `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRouteClass()` (note: this matching ID is true if `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` is true. If `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.reflect.KClass,kotlin.Boolean,kotlin.Boolean)` is false, this matching ID is the id of the last destination that is popped). |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRoute()` |   |
| `https://developer.android.com/reference/androidx/navigation/NavOptions#isPopUpToInclusive()` |   |

### setPopUpTo

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

```
public final @NonNull NavOptions.Builder <T extends Object> setPopUpTo(
    @NonNull T route,
    boolean inclusive,
    boolean saveState
)
```

Pop up to a given destination before navigating. This pops all non-matching destinations from the back stack until this destination is found.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T route` | route from an Object for destination to pop up to, clearing all intervening destinations. |
| `boolean inclusive` | true to also pop the given destination from the back stack. |
| `boolean saveState` | true if the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same route from an Object as `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRouteObject()` (note: this matching ID is true if `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` is true. If `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.Any,kotlin.Boolean,kotlin.Boolean)` is false, this matching ID is the id of the last destination that is popped). |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRoute()` |   |
| `https://developer.android.com/reference/androidx/navigation/NavOptions#isPopUpToInclusive()` |   |

### setPopUpTo

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

```
public final @NonNull NavOptions.Builder setPopUpTo(String route, boolean inclusive, boolean saveState)
```

Pop up to a given destination before navigating. This pops all non-matching destinations from the back stack until this destination is found.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html route` | route for destination to pop up to, clearing all intervening destinations. |
| `boolean inclusive` | true to also pop the given destination from the back stack. |
| `boolean saveState` | true if the back stack and the state of all destinations between the current destination and `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` should be saved for later restoration via `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setRestoreState(kotlin.Boolean)` or the `restoreState` attribute using the same ID as `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRoute()` (note: this matching ID is true if `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` is true. If `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` is false, this matching ID is the id of the last destination that is popped). |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavOptions.Builder` | this Builder |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/navigation/NavOptions#popUpToRoute()` |   |
| `https://developer.android.com/reference/androidx/navigation/NavOptions#isPopUpToInclusive()` |   |

### setRestoreState

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

```
public final @NonNull NavOptions.Builder setRestoreState(boolean restoreState)
```

Whether this navigation action should restore any state previously saved by `https://developer.android.com/reference/androidx/navigation/NavOptions.Builder#setPopUpTo(kotlin.String,kotlin.Boolean,kotlin.Boolean)` or the `popUpToSaveState` attribute. If no state was previously saved with the destination ID being navigated to, this has no effect.