В этом руководстве показано, как заставить значок навигации в верхней панели приложения выполнять действия по навигации.
Пример
Следующий фрагмент представляет собой минимальный пример того, как можно реализовать верхнюю панель приложения с функциональным значком навигации. В этом случае значок переносит пользователя к предыдущему пункту назначения в приложении:
@Composable fun TopBarNavigationExample( navigateBack: () -> Unit, ) { Scaffold( topBar = { CenterAlignedTopAppBar( title = { Text( "Navigation example", ) }, navigationIcon = { IconButton(onClick = navigateBack) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } }, ) }, ) { innerPadding -> Text( "Click the back button to pop from the back stack.", modifier = Modifier.padding(innerPadding), ) } }
Ключевые моменты о коде
Обратите внимание на следующее в этом примере:
- Компонуемый
TopBarNavigationExample
определяет параметрnavigateBack
типа() -> Unit
. - Он передает
navigateBack
для параметраnavigationIcon
CenterAlignedTopAppBar
.
Таким образом, всякий раз, когда пользователь нажимает значок навигации в верхней части приложения, он вызывает navigateBack()
.
Передайте функцию
В этом примере для значка используется стрелка назад. Таким образом, аргумент navigateBack()
должен привести пользователя к предыдущему пункту назначения.
Для этого передайте TopBarNavigationExample
вызов NavController.popBackStack()
. Вы делаете это, когда строите свой навигационный граф. Например:
NavHost(navController, startDestination = "home") {
composable("topBarNavigationExample") {
TopBarNavigationExample{ navController.popBackStack() }
}
// Other destinations...
Дополнительные ресурсы
Дополнительные сведения о том, как реализовать навигацию в вашем приложении, см. в следующей серии руководств:
- Навигация с помощью Compose
- Создайте NavController
- Создайте свой навигационный график
- Перейдите к составному элементу