Навигация из верхней панели приложения

В этом руководстве показано, как заставить значок навигации в верхней панели приложения выполнять действия навигации.

Пример

Приведённый ниже фрагмент кода — это минимальный пример того, как можно реализовать верхнюю панель приложения с функциональной иконкой навигации. В данном случае иконка перенаправляет пользователя к предыдущему месту назначения в приложении:

@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...

Дополнительные ресурсы

Для получения более подробной информации о том, как реализовать навигацию в вашем приложении, ознакомьтесь со следующими руководствами: