代码之家  ›  专栏  ›  技术社区  ›  Cheok Yan Cheng

Kotlin代码中无法识别android.arch.lifecycle.ViewModelProviders

  •  0
  • Cheok Yan Cheng  · 技术社区  · 6 年前

    对于Java项目,为了识别 android.arch.lifecycle.ViewModelProviders ,我只需在构建梯度中定义以下内容

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        def lifecycle_version = "1.1.1"
        // ViewModel and LiveData
        implementation "android.arch.lifecycle:extensions:$lifecycle_version"
        // alternately - if using Java8, use the following instead of compiler
        implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
    

    然而,在Kotlin项目中,我很难做到这一点 . 我试过了

    科特林项目

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
    
        def lifecycle_version = "1.1.1"
        // ViewModel and LiveData
        implementation "android.arch.lifecycle:extensions:$lifecycle_version"
        kapt "android.arch.lifecycle:compiler:$lifecycle_version"
    

    它仍然无法识别 android.arch.lifecycle.ViewModelProviders

    enter image description here

    完整的build.gradle如下所示- https://github.com/yccheok/AndroidDraw/blob/748baf44571c5b83d0c6e5b6a7137eef9cb17cdc/app/build.gradle

    我可以知道吗,还有什么我错过的吗?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Stanislav Bondar    6 年前

    使用 kapt 你也应该 apply plugin: 'kotlin-kapt' .

        2
  •  1
  •   Vivek    6 年前

    请尝试此操作,更改viewmodel和扩展版本“1.1.0”

    def lifecycle_version = "1.1.0" // change in this line
    
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version"
    

    注意:我也使用过这种错误消息,但我的问题在降级时得到了解决 version 1.1.1 具有 version 1.1.0 .

        3
  •  0
  •   Sarthak Gandhi    6 年前

    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel:2.0,0'
    implementation 'androidx.lifecycle:lifecycle-livedata:2.0.0'
    

    这就是我在转换到androidX时正在使用的。

    希望这有帮助。

        4
  •  0
  •   Rafael    5 年前

    在我的情况下,我还需要从gradle.properties中删除以下行:

    android.useAndroidX=true
    android.enableJetifier=true
    
        5
  •  0
  •   divyansh ingle    5 年前

    我知道之前有人问过这个问题,当时它不是不推荐的,而是其他开发人员的信息。该类已被弃用,现在您只能使用构造函数直接使用ViewModelProvider。

    欲知详情 Android Developer