未解决的参考:viewModelScope - Kotlin Android
Posted
技术标签:
【中文标题】未解决的参考:viewModelScope - Kotlin Android【英文标题】:Unresolved reference: viewModelScope - Kotlin Android 【发布时间】:2019-10-11 19:59:02 【问题描述】:我尝试将 viewModelScope 添加到基本视图模型,但 android studio 无法识别它。
我尝试使用找到的一些解决方案更改我的 gradle 构建文件,但没有任何效果。
这里是我的 build.gradle 应用程序的摘录
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
当我在 viewModel 中键入 viewModelScope 时,它会显示 Unresolved reference: viewModelScope
。
【问题讨论】:
我使用androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01
让它工作。
【参考方案1】:
目前它处于 alpha 阶段,因此请更新您的 gradle 以使用以下依赖项:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
【讨论】:
【参考方案2】:在我的情况下,我忘记在该类中扩展 ViewModel,您用于 viewModelScope 的类必须类似于 kotlin 中的 yourModelClass : ViewModel()
和 java 中的 yourModelClass extends ViewModel
希望对你有所帮助
【讨论】:
【参考方案3】:我遇到了同样的问题,我刚刚导入:
"androidx.navigation:navigation-fragment-ktx:2.2.0-rc03"
"androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc03"
尽管我认为 fragment-ktx 并没有真正相关。我花了一段时间才弄清楚。希望对您有所帮助!
【讨论】:
有人能解释一下为什么“androidx.navigation:navigation-fragment-ktx”与viewModelScope有关吗??【参考方案4】:还要检查您是否在正确的文件中。有一段时间我遇到了同样的问题,然后我来到了这个页面,但后来,我意识到我不小心尝试在我的 Fragment 上运行 viewModelScope.launch
。
viewModelScope.launch
仅在您的 ViewModel 中可用,并且
lifecycleScope.launch
在您的生命周期感知组件中。
【讨论】:
【参考方案5】:有关工件的最新版本,请参阅 Maven Repository Android Lifecycle ViewModel Kotlin Extensions
在应用级别的 build.gradle 文件中添加以下内容:-
def lifecycle_version = "2.2.0-rc03"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
不要忘记在 app/build.gradle 文件的顶部添加apply plugin: 'kotlin-kapt'
【讨论】:
【参考方案6】:viewModelScope
是在 2.1.0
版本中引入的,请参阅 here。
检查是否安装了lifecycle-viewmodel-ktx-2.2.0-alpha01.aar
。对我来说,您编写的设置没有错误消息。但是,使用早期版本时会出现错误消息:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0"
但这有效:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"
【讨论】:
【参考方案7】:看起来您使用了两个不同版本的 androidX 生命周期库。
将您的 app/build.gradle
更改为:
...
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
...
【讨论】:
以上是关于未解决的参考:viewModelScope - Kotlin Android的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin Coroutines viewModelScope 中的改造调用
Kotlin之协程coroutine lifecycleScope 和 viewModelScope源码