代码之家  ›  专栏  ›  技术社区  ›  ashwin mahajan

无法解析符号ViewModelProviders

  •  3
  • ashwin mahajan  · 技术社区  · 6 年前

    我正在研究android viewmodel体系结构组件,但在尝试在appcompatactivity中初始化viewmodel时遇到上述错误。

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

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

    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 班级。

    还需要添加什么来访问 视图模型提供程序 班级?

    编辑:

    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

    3 回复  |  直到 6 年前
        1
  •  9
  •   CommonsWare    6 年前

    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文件同步项目”手动执行此操作)

        2
  •  0
  •   lyy    5 年前

    如果在libary中配置,则可以修改 implementation api

        3
  •  0
  •   EAM    5 年前

    你不需要两者都有 lifecycle:extensions lifecycle:viewmodel 在build.gradle文件中,删除

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

    现在应该没事了。另外,您可能希望迁移到androidx并使用库的2.0.0版本。