# DynamicGraphNavigator

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/DynamicGraphNavigator.kt+class:androidx.navigation.dynamicfeatures.DynamicGraphNavigator) Added in [2.3.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.0)

*** ** * ** ***


```
@Navigator.Name(value = "navigation")
public final class DynamicGraphNavigator extends NavGraphNavigator
```

<br />

|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||||
| ↳ | [androidx.navigation.Navigator](https://developer.android.com/reference/androidx/navigation/Navigator) |||
|   | ↳ | [androidx.navigation.NavGraphNavigator](https://developer.android.com/reference/androidx/navigation/NavGraphNavigator) ||
|   |   | ↳ | [androidx.navigation.dynamicfeatures.DynamicGraphNavigator](https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator) |

*** ** * ** ***

Navigator for graphs in dynamic feature modules.

This class handles navigating to a progress destination when the installation of a dynamic feature module is required. By default, the progress destination set by `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#installDefaultProgressDestination(kotlin.Function0)` will be used, but this can be overridden by setting the `app:progressDestinationId` attribute in your navigation XML file.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph extends https://developer.android.com/reference/androidx/navigation/NavGraph` The `https://developer.android.com/reference/androidx/navigation/NavGraph` for dynamic features. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#DynamicGraphNavigator(androidx.navigation.NavigatorProvider,androidx.navigation.dynamicfeatures.DynamicInstallManager)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavigatorProvider navigatorProvider, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicInstallManager installManager )` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph` | `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#createDestination()()` Create a destination for the `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph`. |
| `final void` | `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#installDefaultProgressDestination(kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDestination> progressDestinationSupplier )` Installs the default progress destination to this graph via a lambda. |
| `void` | `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#navigate(kotlin.collections.List,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry> entries, https://developer.android.com/reference/androidx/navigation/NavOptions navOptions, https://developer.android.com/reference/androidx/navigation/Navigator.Extras navigatorExtras )` Navigate to a destination. |
| `void` | `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#onRestoreState(android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html savedState)` |
| `https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#onSaveState()()` |

| ### Inherited methods |
|---|
| From [androidx.navigation.NavGraphNavigator](https://developer.android.com/reference/androidx/navigation/NavGraphNavigator) |---|---| | `final @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry>>` | `https://developer.android.com/reference/androidx/navigation/NavGraphNavigator#getBackStack()()` | |
| From [androidx.navigation.Navigator](https://developer.android.com/reference/androidx/navigation/Navigator) |---|---| | `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavigatorState` | `https://developer.android.com/reference/androidx/navigation/Navigator#getState()()` | | `final boolean` | `https://developer.android.com/reference/androidx/navigation/Navigator#isAttached()()` | | `https://developer.android.com/reference/androidx/navigation/NavDestination` | `https://developer.android.com/reference/androidx/navigation/Navigator#navigate(androidx.navigation.NavDestination,android.os.Bundle,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavGraph destination, https://developer.android.com/reference/android/os/Bundle.html args, https://developer.android.com/reference/androidx/navigation/NavOptions navOptions, https://developer.android.com/reference/androidx/navigation/Navigator.Extras navigatorExtras )` | | `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/navigation/Navigator#onAttach(androidx.navigation.NavigatorState)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavigatorState state)` | | `void` | `https://developer.android.com/reference/androidx/navigation/Navigator#onLaunchSingleTop(androidx.navigation.NavBackStackEntry)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry backStackEntry)` | | `boolean` | `https://developer.android.com/reference/androidx/navigation/Navigator#popBackStack()()` | | `void` | `https://developer.android.com/reference/androidx/navigation/Navigator#popBackStack(androidx.navigation.NavBackStackEntry,kotlin.Boolean)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavBackStackEntry popUpTo, boolean savedState)` | |

## Public constructors

### DynamicGraphNavigator

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

```
public DynamicGraphNavigator(
    @NonNull NavigatorProvider navigatorProvider,
    @NonNull DynamicInstallManager installManager
)
```

## Public methods

### createDestination

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

```
public @NonNull DynamicGraphNavigator.DynamicNavGraph createDestination()
```

Create a destination for the `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph`.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph` | The created graph. |

### installDefaultProgressDestination

```
public final void installDefaultProgressDestination(
    @NonNull Function0<@NonNull NavDestination> progressDestinationSupplier
)
```

Installs the default progress destination to this graph via a lambda. This supplies a `https://developer.android.com/reference/androidx/navigation/NavDestination` to use when the actual destination is not installed at navigation time.

This **must** be called before you call `https://developer.android.com/reference/androidx/navigation/NavController#setGraph(kotlin.Int)` to ensure that all `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator.DynamicNavGraph` instances have the correct progress destination installed in `https://developer.android.com/reference/androidx/navigation/dynamicfeatures/DynamicGraphNavigator#onRestoreState(android.os.Bundle)`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/navigation/NavDestination> progressDestinationSupplier` | The default progress destination supplier. |

### navigate

```
public void navigate(
    @NonNull List<@NonNull NavBackStackEntry> entries,
    NavOptions navOptions,
    Navigator.Extras navigatorExtras
)
```

Navigate to a destination.

In case the destination module is installed the navigation will trigger directly. Otherwise the dynamic feature module is requested and navigation is postponed until the module has successfully been installed.

### onRestoreState

```
public void onRestoreState(@NonNull Bundle savedState)
```

### onSaveState

```
public Bundle onSaveState()
```