モケラ

Tech Sheets

mokelab

Jetpack ComposeアプリにNavHostを追加する

最終更新日:2022-05-09

Navigationを使ってJetpack Composeを使用するアプリに画面遷移機能を追加するには、まずNavHostを追加します。

アプリにNavHostを追加するには、次の2ステップを行います。

  • NavControllerを作る
  • Scaffoldの中でNavHostを作る

NavControllerを作る

アプリのルートとなるComposableの中で NavController を作ります。再composeの際に情報が失われると困るので、 rememberNavController() を使って作ります。

@Composable
fun MyApp() {
    ComposeAppTheme {
        val navController = rememberNavController()
        ...
    }
}

Scaffoldの中でNavHostを作る

次に、 Scaffold の中でNavHostを作ります。各画面に対応するComposableには文字列で名前をつけていきます。今回は最初の1画面のみなので main にしておきます。

@Composable
fun MyApp() {
    ComposeAppTheme {
        val navController = rememberNavController()
        Scaffold(
            topBar = { MyTopAppBar() },
        ) {
            NavHost(navController = navController, startDestination = "main") {
                composable("main") {
                    MainScreen()
                }
            }
        }
    }
}

NavHoststartDestination で、最初にどの画面(Composable)が表示されるかを指定します。

NavHost{} の中で、 composable(画面名) を画面の数だけ作り、その中でどのComposableを表示させるかを指定します。

一覧に戻る