Nawigacja z górnego paska aplikacji

Z tego przewodnika dowiesz się, jak sprawić, aby ikona nawigacji w górnym pasku aplikacji wykonywała działania nawigacyjne.

Przykład

Poniższy fragment kodu to minimalny przykład implementacji górnego paska aplikacji z funkcjonalną ikoną nawigacji. W tym przypadku ikona przenosi użytkownika do poprzedniego miejsca docelowego w aplikacji:

@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),
        )
    }
}

Najważniejsze informacje o kodzie

W tym przykładzie zwróć uwagę na te kwestie:

  • Kompozycyjny element TopBarNavigationExample definiuje parametr navigateBack typu () -> Unit.
  • Przekazuje navigateBack jako parametr navigationIcon elementu CenterAlignedTopAppBar.

Dzięki temu, gdy użytkownik kliknie ikonę nawigacji w górnym pasku aplikacji, wywoła funkcję navigateBack().

Przekazywanie funkcji

W tym przykładzie jako ikony używamy strzałki wstecz. Dlatego argument funkcji navigateBack() powinien przenosić użytkownika do poprzedniego miejsca docelowego.

Aby to zrobić, przekaż TopBarNavigationExample wywołanie funkcji NavController.popBackStack(). Zrobisz to w miejscu, w którym tworzysz wykres nawigacji. Przykład:

NavHost(navController, startDestination = "home") {
    composable("topBarNavigationExample") {
        TopBarNavigationExample{ navController.popBackStack() }
    }
    // Other destinations...

Dodatkowe materiały

Więcej informacji o implementowaniu nawigacji w aplikacji znajdziesz w tych przewodnikach: