无法解析符号 ViewModelProviders

Cannot resolve symbol ViewModelProviders

我正在研究 Android ViewModel 架构组件,但在 AppCompatActivity 中尝试初始化 ViewModel 时出现上述错误。

import android.arch.lifecycle.ViewModelProviders;
ViewModelProviders.of(this).get(CounterViewModel.class);

有一些与此相关的问题和文章,他们指出在应用 gradle 文件中添加 lifecycle:extensionslifecycle:viewmodel 依赖项,但我仍然得到错误。

implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "android.arch.lifecycle:viewmodel:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

包 android.arch.lifecycle 不包含 class ViewModelProviders 而它只有 ViewModelProvider class.

还需要添加什么才能访问 ViewModelProviders class?

编辑:

app/build.gradle 中的依赖项:

dependencies {
    implementation project(':lifecycle')
    implementation project(':base')
    implementation "android.arch.lifecycle:extensions:1.1.1"
    implementation "android.arch.lifecycle:viewmodel:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

android.arch.lifecycle:extensions:1.1.1肯定有android.arch.lifecycle.ViewModelProviders。如果您打开项目树的 "External Libraries" 部分并检查库内容,您可以在 Android Studio 中看到它:

找不到 import 的一些可能原因包括:

  • 你的implementation "android.arch.lifecycle:extensions:1.1.1"放错地方了(应该在模块的build.gradle文件的dependencies闭包里,比如app/build.gradle )

  • 您没有将 Android Studio 与 Gradle 构建文件同步(通常会提示您执行此操作,但您可以通过文件 > 与项目同步来手动执行此操作Gradle 来自 Android Studio 主菜单的文件)

如果在库中配置,可以将implementation修改为api

您的 build.gradle 文件中不需要 lifecycle:extensionslifecycle:viewmodel,删除

implementation "android.arch.lifecycle:viewmodel:1.1.1"

现在应该没问题了。此外,您可能希望迁移到 AndroidX 并使用 2.0.0 版本的库。

ViewModelProviders 现已弃用。请改用 ViewModelProvider