首页 > 解决方案 > 无法解析符号 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 不包含类ViewModelProviders,它只有ViewModelProvider类。

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

编辑 :

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"
}

在此处输入图像描述

标签: androidandroid-viewmodel

解决方案


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

android.arch.lifecycle:extensions:1.1.1 内容

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

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

  • 您没有将 Android Studio 与 Gradle 构建文件同步(通常会提示您执行此操作,但您可以从 Android Studio 主菜单中的 File > Sync Project with Gradle Files 手动执行此操作)


推荐阅读