我是Android开发的新手,目前正在开发

我使用每个人似乎都在工厂使用的样板代码:

class ExampleViewModelFactory(private val exampleDao: ExampleDao) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(exampleViewModel::class.java)) {
            @Suppress("UNCHECKED_CAST")
            return ExampleViewModel(exampleDao) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}

现在的问题是,编译器给了我以下错误:

e:C:\Users\...\例如ViewModel.kt:(64,7):仅允许使用-Xjvm default选项从具有"@JVMDAULT"成员的接口继承

这个错误是由我在viewModel中实现的viewModelFactory类产生的.我真的不知道这意味着什么,我找不到任何有用的东西,甚至与我的具体问题有关.我基本上遵循了一些关于创建第一个应用程序的基本教程,但我一直遇到这样的错误.在大多数情况下,我能够自己解决问题,但这次不同了.

我知道你们中的许多人都有很多经验和知识,所以我希望你们中的一些人能找到时间来帮助我,并给我一个提示,我可以做些什么来解决这个问题.

推荐答案

看起来你要么直接要么间接(通过其他库)依赖Lifecycle 2.5.0-alpha01.

按照this issue:

您需要将以下内容临时添加到build.gradle:

tasks.withType(KotlinCompile).configureEach {
    kotlinOptions {
        freeCompilerArgs += [
                "-Xjvm-default=all",
        ]
    }
}

请注意,在某些情况下,您可能希望使用all-compatibility而不是all,请在Jebrain's blogpost中了解更多信息.

从kotlin 1.6.20开始,你不需要touch 构建.gradle欲了解更多信息,请参阅KT-47000

Android相关问答推荐

ENV变量在gradle进程中没有更新

Android compose ,在图像中zoom 而不裁剪?

这款应用与最新版本的Android不兼容.在Android 14中

属性可选的涟漪效果ItemBackEarth Borderless不适用于Android 13和更高版本

更改活动(上下文)对接收到的uri的访问权限的影响?

使用 Jetpack Compose 在 Android TV 上启用系统声音

如何删除 Jetpack Compose 中按钮的左边框?

当手表与手机断开连接时,有没有办法在我的 Wear OS 应用程序中显示操作系统级别的图标?

组成不重叠的元素

Android Transitions API - 在 24-48 小时后停止接收任何更新

Jetpack Compose Arc 进度条动画(如何重启动画)

android xml底部空间大

删除项目时延迟列不更新

Android Compose 创建抖动动画

TextField 溢出和软包装不适用于 Compose 约束布局

如何在 Compose 中更改高程 colored颜色 ?

如何使用 Jetpack Compose 在应用程序中实现本地化

在 Jetpack Compose 中 Select 要省略的文本

Jetpack Compose 中的按钮上的文本未更新

等到上一个事件完成 Rx