无法访问 'androidx.lifecycle.HasDefaultViewModelProviderFactory',它是 'FavoriteBottomDialogFragment' 的超类型。检查你的模块分类
Cannot access 'androidx.lifecycle.HasDefaultViewModelProviderFactory' which is a supertype of 'FavoriteBottomDialogFragment'. Check your module cla
我在扩展 BottomSheetDialogFragment
的整个 class 中遇到错误
Cannot access 'androidx.lifecycle.HasDefaultViewModelProviderFactory' which is a supertype of 'FavoriteBottomDialogFragment'. Check your module classpath for missing or conflicting dependencies
class 在 app 模块中,该模块实现了另外两个模块:core 和 presentation-core
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
即使出现错误,我也可以运行设备中的项目
我今天遇到了完全相同的问题,并且能够解决。
事实证明,问题是 "failing" class 所在模块使用的 androidx.lifecycle:lifecycle-viewmodel
预期版本与 later 版本之间的版本不匹配一些其他相关代码。
所以在我的例子中,我的模块使用的是这个模块的 2.1.0 版本,但是其中一个依赖项使用的是 2.2.0[= 版本31=]。代码编译没有问题,因为 gradle 解决了对最新版本的依赖;然而 Android Studio 对这种情况感到困惑(并非总是如此,因为这种情况并非一直发生,但 有时 – 这不是我第一次遇到看过这个。)
因此解决方案是:找出您的应用程序中此库的最新版本,并更新此模块的 build.gradle
以指向 gradle 解析到的相同版本。或者:
- 运行
gradlew app:dependencies
- 搜索
lifecycle-viewmodel
的结果
- 在您的应用程序中更新
build.gradle
以依赖于 lifecycle-viewmodel
与 gradle 表示解析为 的版本
- 将项目与 gradle 个文件同步
在我的例子中,在问题 class.
的模块中添加生命周期视图模型依赖关系解决了问题。
在构建 gradle androidx.fragment:fragment-ktx:x.x.x
的实际版本中添加依赖项。对于 activity,您必须添加 androidx.activity:activity-ktx:x.x.x
。我希望这对你有帮助,就我而言,它解决了问题。
我将以下行添加到 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"
就我而言(一个 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'
...
我在扩展 BottomSheetDialogFragment
的整个 class 中遇到错误Cannot access 'androidx.lifecycle.HasDefaultViewModelProviderFactory' which is a supertype of 'FavoriteBottomDialogFragment'. Check your module classpath for missing or conflicting dependencies
class 在 app 模块中,该模块实现了另外两个模块:core 和 presentation-core
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
即使出现错误,我也可以运行设备中的项目
我今天遇到了完全相同的问题,并且能够解决。
事实证明,问题是 "failing" class 所在模块使用的 androidx.lifecycle:lifecycle-viewmodel
预期版本与 later 版本之间的版本不匹配一些其他相关代码。
所以在我的例子中,我的模块使用的是这个模块的 2.1.0 版本,但是其中一个依赖项使用的是 2.2.0[= 版本31=]。代码编译没有问题,因为 gradle 解决了对最新版本的依赖;然而 Android Studio 对这种情况感到困惑(并非总是如此,因为这种情况并非一直发生,但 有时 – 这不是我第一次遇到看过这个。)
因此解决方案是:找出您的应用程序中此库的最新版本,并更新此模块的 build.gradle
以指向 gradle 解析到的相同版本。或者:
- 运行
gradlew app:dependencies
- 搜索
lifecycle-viewmodel
的结果
- 在您的应用程序中更新
build.gradle
以依赖于lifecycle-viewmodel
与 gradle 表示解析为 的版本
- 将项目与 gradle 个文件同步
在我的例子中,在问题 class.
的模块中添加生命周期视图模型依赖关系解决了问题。在构建 gradle androidx.fragment:fragment-ktx:x.x.x
的实际版本中添加依赖项。对于 activity,您必须添加 androidx.activity:activity-ktx:x.x.x
。我希望这对你有帮助,就我而言,它解决了问题。
我将以下行添加到 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"
就我而言(一个 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'
...