未解决的参考:viewModelScope-Koltin Android

时间:2019-05-25 14:36:17

标签: android kotlin android-gradle kotlin-android-extensions kotlin-coroutines

我尝试将viewModelScope添加到基本的viewModel中,但是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

7 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,并且刚刚导入: "androidx.navigation:navigation-fragment-ktx:2.2.0-rc03" "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc03" 即使我认为fragment-ktx并没有真正的关系。花了我一段时间才能弄清楚。希望对您有帮助!

答案 1 :(得分:2)

目前为alpha版本,因此请更新您的gradle以使用以下依赖项:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01"

答案 2 :(得分:1)

在我的情况下,我忘了在该类中扩展ViewModel,用于viewModelScope的类必须类似于kotlin中的yourModelClass : ViewModel()和Java yourModelClass extends ViewModel

希望它的帮助

答案 3 :(得分:1)

viewModelScope2.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"

答案 4 :(得分:0)

您似乎正在使用两个不同版本的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"
...

答案 5 :(得分:0)

有关工件的最新版本,请参考 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 :(得分:0)

还要检查您是否在正确的文件中。我有相同的问题片刻,来到了此页面,但是后来,我意识到我不小心尝试在我的 Fragment 上运行Eigenvectors of the centered kernel matrix. If n_components and remove_zero_eig are not set, then all components are stored.

viewModelScope.launch仅在您的ViewModels和 viewModelScope.launch在您的生命周期感知组件中。