android 创建附加项必须有一个按SAVED_STATE_REGISTRY_OWNER_KEY定义的值

byqmnocz  于 2022-11-20  发布在  Android
关注(0)|答案(5)|浏览(509)

我尝试在使用Jetpack Compose构建的应用程序中实现导航,但当我尝试从一个屏幕导航到另一个屏幕时,我得到:
异常错误:创建附加必须具有SAVED_STATE_REGISTRY_OWNER_KEY的值
我正在使用:

implementation "androidx.hilt:hilt-navigation-compose:1.0.0"

代码如下:

if(viewModel.isAuthenticated) {
    navController.navigate(Screen.Profile.route)
}
kgsdhlau

kgsdhlau1#

@Dragan.T的答案正确。
正在添加
实现“androidx.导航:导航-合成:2.5.1”
解决了我的问题。至于为什么我们需要添加,我不太确定,但它是Android的,所以任何事情都可能发生在这里。

6ovsh4lw

6ovsh4lw2#

如果使用“合成片段”,则可能没有定义了viewModels()的片段依赖关系。
正在添加:
implementation "androidx.fragment:fragment-ktx:1.5.2"
我的build.grade脚本为我修复了它(以前这是一个可传递的依赖项)。

vuv7lop3

vuv7lop33#

implementation "androidx.navigation:navigation-compose:2.5.1"插入您的gradle文件。如果您已经有了它,请确保它已更新为最新的(2.5.1)版本。

r1zhe5dt

r1zhe5dt4#

您可以继续使用此库:

androidx.hilt:hilt-navigation-compose:1.0.0

只有您确定ViewModel已在Activity中的根Composable中初始化。例如:

setContent {
        AndroidLearningTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colors.background
            ) {
                HeroesScreen()
            }
        }
    }

您的可组合

@Composable
fun HeroesScreen(
    viewModel: HeroesViewModel = hiltViewModel()
)
332nm8kg

332nm8kg5#

在我的例子中,我必须升级两个依赖项:Hilt和androidx.navigation。奇怪的是,升级后,错误消失了,但如果我再次降级到以前的版本,错误不会再次出现。以下是我更改的依赖项:

navigation_version = "2.5.3" // was 2.5.1
    dagger_hilt_version = "2.44.2" // was 2.43.2

    implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
    implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
    implementation "androidx.navigation:navigation-dynamic-features-fragment:$navigation_version"
    androidTestImplementation "androidx.navigation:navigation-testing:$navigation_version"

    implementation "com.google.dagger:hilt-android:$dagger_hilt_version"
    kapt "com.google.dagger:hilt-android-compiler:$dagger_hilt_version"
    testImplementation "com.google.dagger:hilt-android-testing:$dagger_hilt_version"
    kaptTest "com.google.dagger:hilt-android-compiler:$dagger_hilt_version"
    androidTestImplementation "com.google.dagger:hilt-android-testing:$dagger_hilt_version"
    kaptAndroidTest "com.google.dagger:hilt-android-compiler:$dagger_hilt_version"

相关问题