# NavigationUI

# NavigationUI

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

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/navigation/ui/NavigationUI "View this page in Java")

<br />

```
object NavigationUI
```

<br />

*** ** * ** ***

Class which hooks up elements typically in the 'chrome' of your application such as global navigation patterns like a navigation drawer or bottom nav bar with your[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

## Summary

|                                ### Public functions                                 |
|-------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | [navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.navigation.ui.AppBarConfiguration))`(` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration) `)` Handles the Up button by delegating its behavior to the given NavController.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | [navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))`(navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`, openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?)` Handles the Up button by delegating its behavior to the given NavController.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | [onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController))`(item: `[MenuItem](https://developer.android.com/reference/android/view/MenuItem.html)`, navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`)` Attempt to navigate to the[NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination)associated with the given MenuItem.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | `@`[NavigationUiSaveStateControl](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUiSaveStateControl) [onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController,kotlin.Boolean))`(` ` item: `[MenuItem](https://developer.android.com/reference/android/view/MenuItem.html)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) `)` Attempt to navigate to the[NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination)associated with the given MenuItem.                                                                                                                                                                                                                                                                                                                                                                      |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupActionBarWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity,androidx.navigation.NavController,androidx.navigation.ui.AppBarConfiguration))`(` ` activity: `[AppCompatActivity](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration) `)` Sets up the ActionBar returned by[AppCompatActivity.getSupportActionBar](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#getSupportActionBar())for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                     |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupActionBarWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity,androidx.navigation.NavController,androidx.customview.widget.Openable))`(` ` activity: `[AppCompatActivity](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?` `)` Sets up the ActionBar returned by[AppCompatActivity.getSupportActionBar](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#getSupportActionBar())for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                                          |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.navigation.NavigationBarView,androidx.navigation.NavController))`(` ` navigationBarView: `[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) `)` Sets up a[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.navigation.NavigationView,androidx.navigation.NavController))`(` ` navigationView: `[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) `)` Sets up a[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | `@`[NavigationUiSaveStateControl](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUiSaveStateControl) [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.navigation.NavigationBarView,androidx.navigation.NavController,kotlin.Boolean))`(` ` navigationBarView: `[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) `)` Sets up a[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                           |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | `@`[NavigationUiSaveStateControl](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUiSaveStateControl) [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.navigation.NavigationView,androidx.navigation.NavController,kotlin.Boolean))`(` ` navigationView: `[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) `)` Sets up a[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                             |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(androidx.appcompat.widget.Toolbar,androidx.navigation.NavController,androidx.navigation.ui.AppBarConfiguration))`(` ` toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration) `)` Sets up a[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                                                                                                                                                   |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(androidx.appcompat.widget.Toolbar,androidx.navigation.NavController,androidx.customview.widget.Openable))`(` ` toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?` `)` Sets up a[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                                                                                                                                                                                                                                                                                                                                                                                        |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout,androidx.appcompat.widget.Toolbar,androidx.navigation.NavController,androidx.navigation.ui.AppBarConfiguration))`(` ` collapsingToolbarLayout: `[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)`,` ` toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration) `)` Sets up a[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)and[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController). |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout,androidx.appcompat.widget.Toolbar,androidx.navigation.NavController,androidx.customview.widget.Openable))`(` ` collapsingToolbarLayout: `[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)`,` ` toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)`,` ` navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)`,` ` openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?` `)` Sets up a[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)and[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).                      |

## Public functions

### navigateUp

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

```
fun navigateUp(
    navController: NavController,
    configuration: AppBarConfiguration
): Boolean
```

Handles the Up button by delegating its behavior to the given NavController. This is an alternative to using[NavController.navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigateUp())directly when the given[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)needs to be considered when determining what should happen when the Up button is pressed.

In cases where no Up action is available, the[AppBarConfiguration.fallbackOnNavigateUpListener](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration#fallbackOnNavigateUpListener())will be called to provide additional control.  

|                                                            Parameters                                                             |
|-----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                | The NavController that hosts your content.                                                         |
| `configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration) | Additional configuration options for determining what should happen when the Up button is pressed. |

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

### navigateUp

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

```
fun navigateUp(navController: NavController, openableLayout: Openable?): Boolean
```

Handles the Up button by delegating its behavior to the given NavController. This should generally be called from[AppCompatActivity.onSupportNavigateUp](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#onSupportNavigateUp()).

If you do not have a[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)layout, you should call[NavController.navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigateUp())directly.  

|                                                     Parameters                                                      |
|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)  | The NavController that hosts your content.                                            |
| `openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?` | The Openable layout that should be opened if you are on the topmost level of the app. |

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

### onNavDestinationSelected

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

```
fun onNavDestinationSelected(item: MenuItem, navController: NavController): Boolean
```

Attempt to navigate to the[NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination)associated with the given MenuItem. This MenuItem should have been added via one of the helper methods in this class.

Importantly, it assumes the[menu item id](https://developer.android.com/reference/android/view/MenuItem.html#getItemId())matches a valid NavDestination.getAction or[destination id](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#id())to be navigated to.

By default, the back stack will be popped back to the navigation graph's start destination. Menu items that have`android:menuCategory="secondary"`will not pop the back stack.  

|                                                     Parameters                                                     |
|--------------------------------------------------------------------------------------------------------------------|-----------------------------------------------|
| `item: `[MenuItem](https://developer.android.com/reference/android/view/MenuItem.html)                             | The selected MenuItem.                        |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) | The NavController that hosts the destination. |

|                                       Returns                                       |
|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | True if the[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)was able to navigate to the destination associated with the given MenuItem. |

### onNavDestinationSelected

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

```
@NavigationUiSaveStateControl
fun onNavDestinationSelected(
    item: MenuItem,
    navController: NavController,
    saveState: Boolean
): Boolean
```

Attempt to navigate to the[NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination)associated with the given MenuItem. This MenuItem should have been added via one of the helper methods in this class.

Importantly, it assumes the[menu item id](https://developer.android.com/reference/android/view/MenuItem.html#getItemId())matches a valid NavDestination.getAction or[destination id](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#id())to be navigated to.

By default, the back stack will be popped back to the navigation graph's start destination. Menu items that have`android:menuCategory="secondary"`will not pop the back stack.  

|                                                     Parameters                                                     |
|--------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `item: `[MenuItem](https://developer.android.com/reference/android/view/MenuItem.html)                             | The selected MenuItem.                                                                                                                                                                                       |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController) | The NavController that hosts the destination.                                                                                                                                                                |
| `saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)                   | Whether the NavController should save the back stack state. This must always be`false`: leave this parameter off entirely to use the non-experimental version of this API, which saves the state by default. |

|                                       Returns                                       |
|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | True if the[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)was able to navigate to the destination associated with the given MenuItem. |

### setupActionBarWithNavController

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

```
fun setupActionBarWithNavController(
    activity: AppCompatActivity,
    navController: NavController,
    configuration: AppBarConfiguration = AppBarConfiguration.Builder(navController.graph).build()
): Unit
```

Sets up the ActionBar returned by[AppCompatActivity.getSupportActionBar](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#getSupportActionBar())for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the action bar will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)you provide controls how the Navigation button is displayed. Call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))to handle the Up button.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                                           Parameters                                                                                           |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| `activity: `[AppCompatActivity](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity)                                                                       | The activity hosting the action bar that should be kept in sync with changes to the NavController. |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                                                                             | The NavController whose navigation actions will be reflected in the title of the action bar.       |
| `configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)` = AppBarConfiguration.Builder(navController.graph).build()` | Additional configuration options for customizing the behavior of the ActionBar                     |

### setupActionBarWithNavController

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

```
fun setupActionBarWithNavController(
    activity: AppCompatActivity,
    navController: NavController,
    openableLayout: Openable?
): Unit
```

Sets up the ActionBar returned by[AppCompatActivity.getSupportActionBar](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#getSupportActionBar())for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the action bar will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The start destination of your navigation graph is considered the only top level destination. On the start destination of your navigation graph, the ActionBar will show the drawer icon if the given Openable layout is non null. On all other destinations, the ActionBar will show the Up button. Call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))to handle the Up button.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                        Parameters                                                        |
|--------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| `activity: `[AppCompatActivity](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity) | The activity hosting the action bar that should be kept in sync with changes to the NavController. |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)       | The NavController whose navigation actions will be reflected in the title of the action bar.       |
| `openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?`      | The Openable layout that should be toggled from the home button                                    |

|                                                                                                                               See also                                                                                                                                |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| [setupActionBarWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity,androidx.navigation.NavController,androidx.customview.widget.Openable)) |   |

### setupWithNavController

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

```
fun setupWithNavController(
    navigationBarView: NavigationBarView,
    navController: NavController
): Unit
```

Sets up a[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController). This will call[onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController))when a menu item is selected. The selected item in the NavigationBarView will automatically be updated when the destination changes.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                   Parameters                                                                    |
|-------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `navigationBarView: `[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html) | The NavigationBarView ([BottomNavigationView](https://developer.android.com/reference/com/google/android/material/bottomnavigation/BottomNavigationView.html)or[NavigationRailView](https://developer.android.com/reference/com/google/android/material/navigationrail/NavigationRailView.html)) that should be kept in sync with changes to the NavController. |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                              | The NavController that supplies the primary menu. Navigation actions on this NavController will be reflected in the selected item in the NavigationBarView.                                                                                                                                                                                                     |

### setupWithNavController

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

```
fun setupWithNavController(
    navigationView: NavigationView,
    navController: NavController
): Unit
```

Sets up a[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController). This will call[onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController))when a menu item is selected. The selected item in the NavigationView will automatically be updated when the destination changes.

If the[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)is directly contained with an[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)layout, it will be closed when a menu item is selected.

Similarly, if the[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)has a[BottomSheetBehavior](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetBehavior.html)associated with it (as is the case when using a[com.google.android.material.bottomsheet.BottomSheetDialog](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialog.html)), the bottom sheet will be hidden when a menu item is selected.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                               Parameters                                                               |
|----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `navigationView: `[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html) | The NavigationView that should be kept in sync with changes to the NavController.                                                                                      |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                     | The NavController that supplies the primary and secondary menu. Navigation actions on this NavController will be reflected in the selected item in the NavigationView. |

### setupWithNavController

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

```
@NavigationUiSaveStateControl
fun setupWithNavController(
    navigationBarView: NavigationBarView,
    navController: NavController,
    saveState: Boolean
): Unit
```

Sets up a[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController). This will call[onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController))when a menu item is selected. The selected item in the NavigationBarView will automatically be updated when the destination changes.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                   Parameters                                                                    |
|-------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `navigationBarView: `[NavigationBarView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationBarView.html) | The NavigationBarView ([BottomNavigationView](https://developer.android.com/reference/com/google/android/material/bottomnavigation/BottomNavigationView.html)or[NavigationRailView](https://developer.android.com/reference/com/google/android/material/navigationrail/NavigationRailView.html)) that should be kept in sync with changes to the NavController. |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                              | The NavController that supplies the primary menu.                                                                                                                                                                                                                                                                                                               |
| `saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)                                                | Whether the NavController should save the back stack state. This must always be`false`: leave this parameter off entirely to use the non-experimental version of this API, which saves the state by default. Navigation actions on this NavController will be reflected in the selected item in the NavigationBarView.                                          |

### setupWithNavController

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

```
@NavigationUiSaveStateControl
fun setupWithNavController(
    navigationView: NavigationView,
    navController: NavController,
    saveState: Boolean
): Unit
```

Sets up a[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController). This will call[onNavDestinationSelected](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#onNavDestinationSelected(android.view.MenuItem,androidx.navigation.NavController))when a menu item is selected. The selected item in the NavigationView will automatically be updated when the destination changes.

If the[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)is directly contained with an[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)layout, it will be closed when a menu item is selected.

Similarly, if the[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html)has a[BottomSheetBehavior](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetBehavior.html)associated with it (as is the case when using a[com.google.android.material.bottomsheet.BottomSheetDialog](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialog.html)), the bottom sheet will be hidden when a menu item is selected.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                               Parameters                                                               |
|----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `navigationView: `[NavigationView](https://developer.android.com/reference/com/google/android/material/navigation/NavigationView.html) | The NavigationView that should be kept in sync with changes to the NavController.                                                                                                                                                                                                                                   |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                     | The NavController that supplies the primary and secondary menu.                                                                                                                                                                                                                                                     |
| `saveState: `[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)                                       | Whether the NavController should save the back stack state. This must always be`false`: leave this parameter off entirely to use the non-experimental version of this API, which saves the state by default. Navigation actions on this NavController will be reflected in the selected item in the NavigationView. |

### setupWithNavController

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

```
fun setupWithNavController(
    toolbar: Toolbar,
    navController: NavController,
    configuration: AppBarConfiguration = AppBarConfiguration.Builder(navController.graph).build()
): Unit
```

Sets up a[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the Toolbar will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)you provide controls how the Navigation button is displayed and what action is triggered when the Navigation button is tapped. This method will call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))when the Navigation button is clicked.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                                           Parameters                                                                                           |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| `toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)                                                                                         | The Toolbar that should be kept in sync with changes to the NavController.                |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                                                                             | The NavController whose navigation actions will be reflected in the title of the Toolbar. |
| `configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)` = AppBarConfiguration.Builder(navController.graph).build()` | Additional configuration options for customizing the behavior of the Toolbar              |

### setupWithNavController

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

```
fun setupWithNavController(
    toolbar: Toolbar,
    navController: NavController,
    openableLayout: Openable?
): Unit
```

Sets up a[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the Toolbar will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The start destination of your navigation graph is considered the only top level destination. On the start destination of your navigation graph, the Toolbar will show the drawer icon if the given Openable layout is non null. On all other destinations, the Toolbar will show the Up button. This method will call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))when the Navigation button is clicked.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                     Parameters                                                      |
|---------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| `toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)              | The Toolbar that should be kept in sync with changes to the NavController.                |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)  | The NavController whose navigation actions will be reflected in the title of the Toolbar. |
| `openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?` | The Openable layout that should be toggled from the Navigation button                     |

|                                                                                                                   See also                                                                                                                   |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| [setupWithNavController](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#setupWithNavController(androidx.appcompat.widget.Toolbar,androidx.navigation.NavController,androidx.customview.widget.Openable)) |   |

### setupWithNavController

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

```
fun setupWithNavController(
    collapsingToolbarLayout: CollapsingToolbarLayout,
    toolbar: Toolbar,
    navController: NavController,
    configuration: AppBarConfiguration = AppBarConfiguration.Builder(navController.graph).build()
): Unit
```

Sets up a[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)and[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the CollapsingToolbarLayout will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)you provide controls how the Navigation button is displayed and what action is triggered when the Navigation button is tapped. This method will call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))when the Navigation button is clicked.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                                           Parameters                                                                                           |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| `collapsingToolbarLayout: `[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)                                  | The CollapsingToolbarLayout that should be kept in sync with changes to the NavController. |
| `toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)                                                                                         | The Toolbar that should be kept in sync with changes to the NavController.                 |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                                                                             | The NavController whose navigation actions will be reflected in the title of the Toolbar.  |
| `configuration: `[AppBarConfiguration](https://developer.android.com/reference/kotlin/androidx/navigation/ui/AppBarConfiguration)` = AppBarConfiguration.Builder(navController.graph).build()` | Additional configuration options for customizing the behavior of the Toolbar               |

### setupWithNavController

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

```
fun setupWithNavController(
    collapsingToolbarLayout: CollapsingToolbarLayout,
    toolbar: Toolbar,
    navController: NavController,
    openableLayout: Openable?
): Unit
```

Sets up a[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html)and[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)for use with a[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController).

By calling this method, the title in the CollapsingToolbarLayout will automatically be updated when the destination changes (assuming there is a valid[label](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination#label())).

The start destination of your navigation graph is considered the only top level destination. On the start destination of your navigation graph, the Toolbar will show the drawer icon if the given Openable layout is non null. On all other destinations, the Toolbar will show the Up button. This method will call[navigateUp](https://developer.android.com/reference/kotlin/androidx/navigation/ui/NavigationUI#navigateUp(androidx.navigation.NavController,androidx.customview.widget.Openable))when the Navigation button is clicked.

Destinations that implement[androidx.navigation.FloatingWindow](https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow)will be ignored.  

|                                                                          Parameters                                                                           |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| `collapsingToolbarLayout: `[CollapsingToolbarLayout](https://developer.android.com/reference/com/google/android/material/appbar/CollapsingToolbarLayout.html) | The CollapsingToolbarLayout that should be kept in sync with changes to the NavController. |
| `toolbar: `[Toolbar](https://developer.android.com/reference/kotlin/androidx/appcompat/widget/Toolbar)                                                        | The Toolbar that should be kept in sync with changes to the NavController.                 |
| `navController: `[NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController)                                            | The NavController whose navigation actions will be reflected in the title of the Toolbar.  |
| `openableLayout: `[Openable](https://developer.android.com/reference/kotlin/androidx/customview/widget/Openable)`?`                                           | The Openable layout that should be toggled from the Navigation button                      |