ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

android:studio:application:navigation-01

06.ホーム画面の表示

NavGraphにホーム画面を登録して、Compose Navigationでホーム画面を表示します。

:appモジュールのbuild.gradle.kts:core:navigationモジュールへの依存とCompose Navigationの依存ライブラリを追記します。

   :
dependencies {
   :
  implementation(project(":core:navigation"))
   :
  implementation(libs.navigation.compose)
  //implementation(libs.hilt.navigation.compose)
}

4行目
:core:navigationモジュールへの依存を追記しています。
6行目
Compose Navigationの依存ライブラリを追記しています。
5行目
HiltCompose Navigation依存ライブラリを追記しています。

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

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

package jp.co.progress_llc.portal.navigation

import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import jp.co.progress_llc.portal.presentation.HomeScreen

fun NavGraphBuilder.homeNavigation() {
  composable("home") { HomeScreen() }
}

8行目
HomeScreenhomeの名前で登録しています。

DI(Hilt)への登録

:appモジュールのdiディレクトリ(新規作成します)内にHomeNavGraphModule.ktを作成し、NavGraphDI(Hilt)に登録します。

package jp.co.progress_llc.portal.di

import androidx.navigation.NavGraphBuilder
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
import jp.co.progress_llc.portal.navigation.homeNavigation

@Module
@InstallIn(SingletonComponent::class)
object HomeNavGraphModule {
  @Provides
  @IntoSet
  fun provideHomeNavGraph(): NavGraphBuilder.() -> Unit = { homeNavigation() }
}

14行目~16行目
NavGraphを登録しています。

Home画面の表示

:appモジュールのMainActivity.ktHome画面を表示するように変更します。

※コードをすべて入れ替えます。

package jp.co.progress_llc.portal

import android.os.Bundle
import javax.inject.Inject
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.rememberNavController
import dagger.hilt.android.AndroidEntryPoint
import jp.co.progress_llc.portal.core.ui.theme.AppTheme
import jp.co.progress_llc.portal.core.navigation.AppNavigation

@AndroidEntryPoint
class MainActivity : ComponentActivity() {
  @Inject
  lateinit var navGraphBuilders: Set<@JvmSuppressWildcards NavGraphBuilder.() -> Unit>

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
      AppTheme {
        val navController = rememberNavController()
        AppNavigation(
          navController = navController,
          startDestination = "home",
          builders = navGraphBuilders.toList()
        )
      }
    }
  }
}

27行目
起動時はhomeという名前のNavGraphを表示するように指定しています。

android/studio/application/navigation-01.txt · 最終更新: by プログレス合同会社