【问题标题】:Couldn't find `activityViewModels()` Hilt Android找不到`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()

【问题讨论】:

标签: java android kotlin mvvm dagger-hilt


【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多