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

android.arch.lifecycle.ViewModelProviders is not recognized in Kotlin code

对于Java项目,为了识别android.arch.lifecycle.ViewModelProviders,我简单地在我的build gradle

中定义如下

Java 项目

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项目中,我很难让它识别android.arch.lifecycle.ViewModelProviders。我试过了

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

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

请问还有什么我遗漏的吗?

请试试这个:

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 时正在使用的。

希望对您有所帮助。

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

请试试这个,更改您的视图模型和扩展版本“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.0降级version 1.1.1时我的问题就解决了。

您需要检查降级版本号。

在我的例子中,我还需要从 gradle.properties 中删除这些行:

android.useAndroidX=true
android.enableJetifier=true

我知道之前有人问过这个问题,当时它并没有被弃用,而是为了其他开发者的信息。 Class 已被弃用,现在您可以仅使用构造函数直接使用 ViewModelProvider。

更多信息Android Developer