android - (jetpack compose) androidx.compose.runtime.internal.ComposableLambdaImpl 无法转换为 kotlin.jvm.functions.Function0
问题描述
我的自定义视图有一个 BaseUi 类,我的活动从它扩展而来。
当我使用Root
函数时,应用程序崩溃了。
BaseUi.kt
@ExperimentalAnimationApi
open class BaseUi : AppCompatActivity() {
@Composable
fun RtlView(content: @Composable () -> Unit) {
CompositionLocalProvider(
LocalLayoutDirection provides LayoutDirection.Rtl,
content = content
)
}
@Composable
fun LtrView(content: @Composable () -> Unit) {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
content()
}
}
@Composable
fun Root(
content: @Composable () -> Unit
) {
KasbTheme {
Box(
Modifier
.fillMaxSize()
.background(LightPageBackground)
.padding(Dimen.pagePadding)
){
content()
}
}
}
}
SplashActivity.kt
@ExperimentalAnimationApi
class SplashActivity : BaseActivity() {
val viewModel = SplashActivityViewModel()
@ExperimentalAnimationApi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
InitUI()
}
}
@ExperimentalAnimationApi
@Preview(showBackground = true)
@Composable
fun InitUI() {
Root {
RtlView {
Box(Modifier.fillMaxSize()) {
Image(
painter = painterResource(id = R.drawable.logo),
contentDescription = "",
modifier = Modifier.size(200.dp).align(Alignment.Center)
)
}
}
}
}
}
运行时错误
com.kasb.android E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kasb.android, PID: 22387
java.lang.ClassCastException: androidx.compose.runtime.internal.ComposableLambdaImpl cannot be cast to kotlin.jvm.functions.Function0
at com.kasb.android.ui.activity.SplashActivity.InitUI(SplashActivity.kt:76)
at com.kasb.android.ui.activity.SplashActivity$onCreate$1.invoke(SplashActivity.kt:30)
at com.kasb.android.ui.activity.SplashActivity$onCreate$1.invoke(SplashActivity.kt:29)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:384)
解决方案
不是永久修复,但干净的项目消除了一次编译的错误。不知道为什么会这样。
推荐阅读
- python - Crispy Forms:FormHelper 用于拆分表单/两列相同模型
- c# - 是否可以在 Unity 中启动应用程序之前运行 c# 脚本代码
- c# - 自定义验证失败,“无法读取未定义的属性‘调用’”MVC jquery
- c++ - 如何在 dlib 和 C++ 中获取照片的宽度和高度?
- javascript - 如何在 JavaScript 中计算农历新年的日期?
- javascript - 在 jsTree 的上下文菜单中创建功能不起作用
- javascript - 将 js 对象转换为分层 JSON 结构
- regex - 从出现在特定单词之后的字符串中提取值
- c# - c sharp 类型模式导致编译器错误
- python - Python中的极坐标绘图(没有原点的圆弧)