В этом руководстве показано, как заставить значок навигации в верхней панели приложения выполнять действия навигации.
Пример
Приведённый ниже фрагмент кода — это минимальный пример того, как можно реализовать верхнюю панель приложения с функциональной иконкой навигации. В данном случае иконка перенаправляет пользователя к предыдущему месту назначения в приложении:
@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), ) } }
Основные моменты, касающиеся кода.
Обратите внимание на следующее в этом примере:
- В компоненте Composable
TopBarNavigationExampleопределен параметрnavigateBackтипа() -> Unit. - В качестве параметра
navigationIconдля объектаCenterAlignedTopAppBarпередаетсяnavigateBack.
Таким образом, всякий раз, когда пользователь нажимает на значок навигации в верхней панели «Назад» приложения, вызывается navigateBack() .
Передайте функцию
В этом примере в качестве значка используется стрелка «назад». Таким образом, аргумент функции navigateBack() должен вернуть пользователя к предыдущему месту назначения.
Для этого передайте TopBarNavigationExample вызов NavController.popBackStack() . Это делается там, где вы строите свой навигационный граф. Например:
NavHost(navController, startDestination = "home") {
composable("topBarNavigationExample") {
TopBarNavigationExample{ navController.popBackStack() }
}
// Other destinations...
Дополнительные ресурсы
Для получения более подробной информации о том, как реализовать навигацию в вашем приложении, ознакомьтесь со следующими руководствами:
- Навигация с помощью Compose
- Создайте NavController
- Создайте свою навигационную схему.
- Перейдите к составному элементу