找不到`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的主要内容,如果未能解决你的问题,请参考以下文章