【问题标题】:Unresolved reference: viewModelScope - Kotlin Android未解决的参考: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 让它工作。

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


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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-11-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-12-26
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多