android - (jetpack compose) androidx.compose.runtime.internal.ComposableLambdaImpl 无法转换为 kotlin.jvm.functions.Function0

标签 android kotlin android-jetpack android-jetpack-compose

我的自定义 View 有一个 BaseUi 类,我的 Activity 从它扩展而来。
当我使用 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)

最佳答案

不是永久修复,但干净的项目消除了一次编译的错误。不知道为什么会这样。

关于android - (jetpack compose) androidx.compose.runtime.internal.ComposableLambdaImpl 无法转换为 kotlin.jvm.functions.Function0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68083934/

相关文章:

java - 如何在android中制作完整 ScrollView 的图像

java - 如何为此添加布局

android - 广播有应用程序启动计数

spring - Kotlin - SpringApplicationBuilder 中的扩展运算符

android - 拥有多个 View 模型(每个 fragment 大约一个)是一种不好的做法吗?

Android 4.4 — 半透明状态/导航栏 — fitSystemWindows/clipToPadding 不能通过 fragment 事务工作

Kotlin 解包函数编译器错误

java - Android Studio Kotlin 自动补全重复建议

java - ViewModel 是否负责处理 Activity/Fragment 的所有数据相关操作?

android - 当应用程序处于后台时,Fragment 实例消失