找不到`activityViewModels()` Hilt Android

Posted

技术标签:

【中文标题】找不到`activityViewModels()` Hilt Android【英文标题】:Couldn't find `activityViewModels()` Hilt Android 【发布时间】:2022-01-09 19:43:39 【问题描述】:

我在我的项目中使用 Hilt 和 MVVM,我想从 activityViewModel 获得一个 viewModel 以在 2 个活动中使用相同的内容。但我的 android Studio 显示未解决的参考。

我的应用 build.gradle 是这样的:

plugins 
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-kapt'
        id 'dagger.hilt.android.plugin'
    

。 . .

dependencies 

. .  .

implementation "com.google.dagger:hilt-android:2.38.1"
kapt "com.google.dagger:hilt-android-compiler:2.38.1"

implementation 'androidx.hilt:hilt-navigation-fragment:1.0.0'

implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt 'androidx.hilt:hilt-compiler:1.0.0'
. . .

我的项目build.gradle文件是这样的:

classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1'

我正在尝试像这样获得ViewModel

private val viewModel: SelectWifiViewModel by activityViewModels()

【问题讨论】:

Please do not upload images of code/errors when asking a question. 抱歉,我现在正在解决这个问题。感谢您的提示。 该代码是否在片段中? 【参考方案1】:

activityViewModels 用于获取对 ViewModel 的引用,该 ViewModel 的范围为片段内的 Activity。如果您想在两个活动中使用相同的 ViewModel,我建议您改用 Fragments。

【讨论】:

【参考方案2】:

尝试添加此依赖项:

dependencies 
    def fragment_version = "1.4.0"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing:$fragment_version"

来源:https://developer.android.com/jetpack/androidx/releases/fragment

【讨论】:

我试过添加这个但又说未解决的参考【参考方案3】:

activityViewModels()与Hilt无关

你需要一个不同的依赖。它在

implementation "androidx.fragment:fragment-ktx:1.4.0"

【讨论】:

我试过添加这个但又说未解决的参考 @EmanuelGarcia 添加 gradle 后你同步了吗? 是的,我每次添加/删除依赖项时都会同步。 @EmanuelGarcia 你可以尝试在你想使用的文件中写import androidx.fragment.app.activityViewModels吗? 我也试过了,又说 Unresolved reference :/.【参考方案4】:

activityViewModels() 是来自 fragment-ktx 库的 Kotlin 属性委托。

尝试添加这个依赖:

implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"

【讨论】:

以上是关于找不到`activityViewModels()` Hilt Android的主要内容,如果未能解决你的问题,请参考以下文章

java为啥每次都是找不到文件。找不到文件?

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号

SpringBoot报找不到 dao 问题

ubuntu20.04找不到start命令