无法访问“androidx.lifecycle.HasDefaultViewModelProviderFactory”,它是“FavoriteBottomDialogFragment”的超类型,请检查模块类

k2fxgqgv  于 2023-04-18  发布在  Android
关注(0)|答案(7)|浏览(224)

在扩展BottomSheetDialogFragment的整个类中出现错误

Cannot access 'androidx.lifecycle.HasDefaultViewModelProviderFactory' which is a supertype of 'FavoriteBottomDialogFragment'. Check your module classpath for missing or conflicting dependencies

该类位于app模块中,该模块实现了另外两个模块:核心与表现核心
build.gradle

dependencies {

     implementation fileTree(dir: 'libs', include: ['*.jar'])
     implementation project (':core')
     implementation project (':presentation-core')

     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41"
     implementation 'androidx.appcompat:appcompat:1.1.0'
     implementation 'androidx.core:core-ktx:1.2.0'
     testImplementation 'junit:junit:4.12'
     implementation "com.google.android.material:material:1.1.0"

     //Rx
     implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
     implementation "io.reactivex.rxjava2:rxjava:2.2.9"
     //Architecture component
     implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
     implementation 'androidx.room:room-runtime:2.0.0'
     kapt 'androidx.room:room-compiler:2.0.0'
     kapt 'androidx.lifecycle:lifecycle-common-java8:2.0.0'
     implementation 'androidx.room:room-rxjava2:2.0.0'
     implementation 'androidx.room:room-guava:2.0.0'

     implementation 'androidx.recyclerview:recyclerview:1.1.0'
     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
 }

核心依赖

dependencies {
     api fileTree(dir: 'libs', include: ['*.jar'])
     api "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61"
     api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4"
     api 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.2'
     //library to serialize Java Objects between Contexts
     implementation 'org.parceler:parceler-api:1.1.11'
     kapt 'org.parceler:parceler:1.1.11'

     //testing dependencies
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     testImplementation "org.mockito:mockito-core:2.24.5"
     androidTestImplementation "org.mockito:mockito-android:2.24.5"

     //architecture component
     implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
     implementation "androidx.lifecycle:lifecycle-livedata:2.0.0"

     //RxJava2
     implementation "io.reactivex.rxjava2:rxjava:2.2.9"
     implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
}

表示核心

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
}

BottomSheetDialogFragment

即使我得到的错误,我可以在一个设备中运行的项目

slsn1g29

slsn1g291#

我今天遇到了这个完全相同的问题,并且能够解决。原来这个问题是“失败”类所在的模块所使用的androidx.lifecycle:lifecycle-viewmodel的预期版本与其他依赖代码中的 * 更新 * 版本之间的版本不匹配。
所以在我的例子中,我的模块使用的是这个模块的版本 2.1.0,但是其中一个依赖项使用的是版本 2.2.0。代码编译起来没有问题,因为gradle将依赖项解析为最新版本;然而Android Studio不知何故对这种情况感到困惑(并不总是这样,因为这种情况并不总是发生,但 * 有时 * -这不是我第一次看到这种情况。
因此,解决方案为:找出你的应用中这个库的最新版本,并更新你的build.gradle,让这个模块指向gradle解析到的同一个版本。或者:
1.运行gradlew app:dependencies
1.搜索lifecycle-viewmodel的结果
1.更新应用中的build.gradle,使其依赖于gradle表示要解析的版本的lifecycle-viewmodel
1.将项目与gradle文件同步

aurhwmvo

aurhwmvo2#

在我的例子中(Android模块),Android Studio 4.0.1,我在IDE中收到了许多与androidx.lifecycle.HasDefaultViewModelProviderFactory相关的警告,我通过将这一行添加到build.gradle解决了这个问题:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

因此,build.gradle的开头变为:

implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
...
epggiuax

epggiuax3#

在我的例子中,通过在有问题的类的模块中添加生命周期视图模型依赖项,问题得到了解决。

xxhby3vn

xxhby3vn4#

在构建gradle androidx.fragment:fragment-ktx:x.x.x时使用实际版本添加依赖项。对于Activity,您必须添加androidx.activity:activity-ktx:x.x.x。我希望这对您有帮助,在我的情况下,它解决了问题。

2w3kk1z5

2w3kk1z55#

我在build.gradle中添加了以下行,以解决模块中的相同问题:

def archLifecycleVersion = '2.2.0'
implementation "androidx.lifecycle:lifecycle-extensions:$archLifecycleVersion"
kapt "androidx.lifecycle:lifecycle-compiler:$archLifecycleVersion"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$archLifecycleVersion"
xxls0lw8

xxls0lw86#

您的androidx.lifecycle:lifecycle-XXX依赖版本必须相同
在我的例子中:

implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.1"
vfhzx4xs

vfhzx4xs7#

我也有同样的问题-〉

implementation 'com.google.code.gson:gson:2.8.9'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.0'

我把最后一行的版本从2.6.0改为2.4.0,现在可以用了。

相关问题