トップ アプリバーから移動する

このガイドでは、トップ アプリバーのナビゲーション アイコンでナビゲーション アクションを実行する方法について説明します。

次のスニペットは、機能的なナビゲーション アイコンを使用してトップアプリバーを実装する方法の最小限の例です。この場合、アイコンをクリックすると、アプリ内の以前のデスティネーションに移動します。

@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 は、() -> Unit 型のパラメータ navigateBack を定義します。
  • CenterAlignedTopAppBarnavigationIcon パラメータに navigateBack を渡します。

そのため、ユーザーが最上位のアプリの戻るナビゲーション アイコンをクリックするたびに、navigateBack() が呼び出されます。

関数を渡す

この例では、アイコンに「戻る」矢印を使用しています。そのため、navigateBack() の引数は、ユーザーを前のデスティネーションに移動させる必要があります。

そのためには、TopBarNavigationExampleNavController.popBackStack() への呼び出しを渡します。これは、ナビゲーション グラフを作成するときに行います。例:

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

参考情報

アプリにナビゲーションを実装する方法について詳しくは、次のガイドシリーズをご覧ください。