无法解析符号ViewModelProviders

时间:2018-06-05 12:24:16

标签: android android-viewmodel

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

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

有一些与此相关的问题和文章,他们指出在app 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"
}

enter image description here

4 个答案:

答案 0 :(得分:8)

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

android.arch.lifecycle:extensions:1.1.1 Contents

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

  • 您的implementation "android.arch.lifecycle:extensions:1.1.1"位置错误(应该位于模块dependencies文件的build.gradle个关闭位置,例如app/build.gradle

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

答案 1 :(得分:1)

ViewModelProviders现在已弃用。请改用ViewModelProvider

答案 2 :(得分:0)

如果要在libary中进行配置,则可以将Notification notification = new NotificationCompat.Builder(this); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { notification.setSmallIcon(R.drawable.icon_transperent); notification.setColor(getResources().getColor(R.color.notification_color)); } else { notification.setSmallIcon(R.drawable.icon); } 修改为implementation

答案 3 :(得分:0)

您不需要在build.gradle文件中同时使用lifecycle:extensionslifecycle:viewmodel,将其删除

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

,现在应该可以了。另外,您可能需要迁移到AndroidX并使用该库的2.0.0版本。