我在尝试运行setContent{ Composable() }
时遇到java.lang.NoSuchMethodError
异常。
完整代码:
class ComposeFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
ComposeView(requireContext()).apply { setContent { Text("hello") } }
}
完整异常:
java.lang.NoSuchMethodError: No virtual method setContent(Lkotlin/jvm/functions/Function0;)V in class Landroidx/compose/ui/platform/ComposeView; or its super classes (declaration of 'androidx.compose.ui.platform.ComposeView' appears in /data/app/~~3OmVKUoYitZ_S4H81xmyuw==/my.app.package-PAQxAKmtRuhnzp4M2DME8w==/base.apk)
类似问题的解决方案/答案建议添加buildFeatures { compose = true }
或kotlinCompilerExtensionVersion
,我已经这样做了,但问题仍然存在。
我的完整compose Gradle配置如下所示:
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
useIR = true
}
buildFeatures {
compose = true
}
composeOptions{
kotlinCompilerExtensionVersion = "1.0.5"
}
implementation( "androidx.activity:activity-compose:1.3.1" )
implementation( "androidx.activity:activity-compose:1.3.1" )
implementation( "androidx.compose.material:material:1.0.5" )
implementation( "androidx.compose.animation:animation:1.0.5" )
implementation( "androidx.compose.ui:ui-tooling:1.0.5" )
implementation( "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07" )
androidTestImplementation( "androidx.compose.ui:ui-test-junit4:1.0.5" )
7条答案
按热度按时间vh0rcniy1#
今天遇到了同样的异常,所以我把我的解决方案放在这里,以防其他人需要它。
在我的例子中,这是因为
android
部分的build.gradle
文件中缺少下面的设置Version.COMPOSE
是合成版本,在我的例子中是1.1.0-alpha05
but5z9lq2#
我遇到了同样的问题,通过在我的应用的build.gradle文件中添加以下行,问题得到了解决:
acruukt93#
您的Compose版本太旧,几乎可以肯定这就是您出现问题的原因。请使用以下内容更新您的项目Gradle。请确保同时升级插件版本:
请确保所有依赖项都使用最新的稳定版本。
您还应该更新您的Kotlin插件版本:
211-1.6.10-release-923-AS7442.40
如果您不知道在哪里设置,请单击:
Android Studio > Preferences > Languages & Frameworks > Kotlin
最后,我强烈建议您使用Java 11而不是Java 8,并将应用的build.gradle设置为:
zbwhf8kr4#
添加到
build.gradle.kts
pw9qyyiw5#
将以下行添加到模块的gradle文件中:
如果您在多模块项目中工作,则必须为每个组成所包含模块添加此内容
mzaanser6#
Gradle配置,例如您
我的xml文件像这样
我使用纯Kotlin代码对单独的函数进行比较测试
hgb9j2n67#
要集成composeView,您必须在下面添加依赖项;实现'androidx.活动:活动-编写:1.4.0'
另外,不要忘记支持Kotlin的compose版本。
如果您使用的是compose版本1.1.1,则必须使用Kotlin版本