NavGraphにホーム画面を登録して、Compose Navigationでホーム画面を表示します。
:appモジュールのnavigationディレクトリ(パッケージ)にAppHomeNavGraph.ktを作成します。
package jp.co.progress_llc.portal.navigation
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import jp.co.progress_llc.portal.presentation.AppHomeScreen
const val APP_HOME = "app_home"
fun NavGraphBuilder.appHomeNavGraph() {
composable(APP_HOME) {
AppHomeScreen()
}
}
:appモジュールにdiディレクトリ(パッケージ)を追加し、直下にAppHomeNavGraphModule.ktを作成し、NavGraphをDI(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.appHomeNavGraph
@Module
@InstallIn(SingletonComponent::class)
object AppHomeNavGraphModule {
@Provides
@IntoSet
fun provideHomeNavGraph(): NavGraphBuilder.() -> Unit = {
appHomeNavGraph()
}
}
:appモジュールのMainActivity.ktにCompose Navigationによる画面遷移処理を追加して、Home画面を表示するようにします。
※コードをすべて入れ替えます。
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 dagger.hilt.android.AndroidEntryPoint
import jp.co.progress_llc.portal.core.ui.theme.AppTheme
import jp.co.progress_llc.portal.navigation.AppNavHost
import jp.co.progress_llc.portal.navigation.APP_HOME
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var navGraphBuilders: Set<@JvmSuppressWildcards NavGraphBuilder.() -> Unit>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
AppTheme {
AppNavHost(
navGraphs = navGraphBuilders.toList(),
startDestination = APP_HOME
)
}
}
}
}
エミュレーターでアプリケーションを実行して、ホーム画面が表示されることを確認します。