エラーが発生した箇所
hiltViewModel()
を使ってViewModelにDIを行おうとしました。
@Composable
fun SplashRoute(
viewModel: SplashViewModel = hiltViewModel(),
...
) {
val uiState by viewModel.uiState.collectAsState()
...
エラーの内容
Gradle FileをSyncした際にはエラーは発生しなかったのですが、エミュレーターを使ってアプリを起動しようとすると、次のエラーを発生した後アプリがクラッシュしてしまいました。
FATAL EXCEPTION: main
Process: com.takagimeow.xxx, PID: 30XXX
java.lang.IllegalArgumentException: CreationExtras must have a value by `SAVED_STATE_REGISTRY_OWNER_KEY`
エラーが発生した時のSDKのバージョン
Android StudioのFlamingoを使ってプロジェクトを新規作成したので、SDKのバージョンはcompileSdk
とtargetSdk
共に33
に設定されていました。
android {
...
compileSdk 33
defaultConfig {
...
minSdk 24
targetSdk 33
...
}
...
}
エラーが発生した時のGradleの内容
この時の、Hiltのバージョンとして以下の設定を使用していました。
buildscript {
...
ext {
...
// Hilt
hilt_version = '2.44.2'
}
...
}
Hiltに関する依存関係についてはbuild.gradleにて次の内容にしていました。
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
implementation "androidx.hilt:hilt-navigation-compose:1.0.0"
解決方法
同じような問題を発生した人がいないか探していると、次のStackOverFlowのページが見つかりました。
上記のページで回答されている内容と同じように、次の依存関係をappディレクトリ配下のbuild.gradleに追加しました。
implementation "androidx.navigation:navigation-compose:2.5.1"
結果、無事に解決することができました。同じような問題が出て困っている場合は、試しに上記の依存関係をbuild.gradleに追加してみることをお勧めします。