ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

android:studio:application:app:navigation-01

05.ナビゲーションの作成

Compose Navigationを用いてナビゲーション(画面遷移)を行います。

:featureモジュールとの画面遷移は、navControllerを各画面に渡すことで、:appモジュールが各:featureの窓口モジュールを依存するだけで済むようになります。
※各:featureモジュールは:appモジュールを知らなくてもよい。

それにより循環依存がおきないため、:appモジュールにnavControllerを置くことにします。

循環依存が起きそうな場合は、core:navigationのような共通モジュールにnavControllerを置いて、:appモジュールや各:featureモジュールが、共通モジュールを依存することにより、循環依存が起きないようにします。

Compose Navigationの導入

画面遷移を実装するため、Compose Navigationを導入します。

バージョンカタログにCompose Navigationの情報を追記します。

[versions]
   :
navigation = "2.9.5"                # https://mvnrepository.com/artifact/androidx.navigation/navigation-compose

[libraries]
   :
navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigation" }
   
[plugins]

3行目
コメント部分のURLを参照して、最新安定バージョンを指定します。
7行目
Compose Navigationの依存ライブラリを定義しています。

追記後、『Sync Now』で内容をプロジェクトに反映させます。

Compose Navigationの適用

:appモジュールのbuild.gradle.ktsCompose Navigationを適用します。

   :
dependencies {
   :
  implementation(libs.navigation.compose)
   :
}

4行目
Compose Navigationの依存関係を参照します。

適用後、『同期アイコン』で内容をプロジェクトに反映させます。

Navigationロジックを作成します。

:appモジュールのnavigationディレクトリ(新規に作成します)内にAppNavigation.ktを作成します。

package jp.co.progress_llc.portal.core.navigation

import androidx.compose.runtime.Composable
import androidx.navigation.NavHostController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.NavHost

@Composable
fun AppNavigation(
  navController: NavHostController,
  startDestination: String,
  builders: List<NavGraphBuilder.() -> Unit>
) {
  NavHost(
    navController = navController,
    startDestination = startDestination
  ) {
    builders.forEach { it() }
  }
}

12行目、18行目
各画面自身で紐づける画面を登録するように定義しています。
画面が増えてもAppNavigationを修正しなくて済むようにしています。
14行目~19行目
NavHost(NavControllerと画面(Composable)を紐づけるコンテナ)を定義しています。

android/studio/application/app/navigation-01.txt · 最終更新: by 管理者