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

时间:2018-12-21 07:47:00

标签: android kotlin viewmodel android-lifecycle

对于Java项目,为了识别android.arch.lifecycle.ViewModelProviders,我只需在构建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。我尝试过

科特林项目

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

我可以知道,还有其他我错过的地方吗?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

请尝试此操作,更改您的视图模型和扩展版本“ 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时,我的问题就解决了。

您需要检查您的版本号降级。

答案 2 :(得分:0)

请尝试:

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

希望这会有所帮助。

答案 3 :(得分:0)

就我而言,我还需要从gradle.properties中删除以下行:

chromeBrowser.Load(_pathTmp);

答案 4 :(得分:0)

我知道这个问题以前是在不被弃用的时候问到的,但它是为其他开发者提供的信息。该类已被弃用,现在您可以仅使用构造函数直接使用ViewModelProvider。

有关更多信息,Android Developer