kotlin 异常错误:开始/结束不平衡

ogq8wdun  于 2022-11-16  发布在  Kotlin
关注(0)|答案(5)|浏览(116)

这段代码导致了此崩溃:
即时消息使用合成版本1.0.0-alpha 06
java.lang.IllegalStateException:开始/结束不平衡 在androidx上编写。运行时。编写器。完成编写(编写器。kt:2369) 在androidx上运行时。 在androidx上编写。运行时。编写器。编写初始化(编写器。kt:2054) 在androidx上。composer。运行时。重新编译器。composer初始$运行时_版本(重新编译器.kt:276) (编写时间:110) 请在androidx.compose.ui.platform.WrappedComposition$setContent$1.调用( Package 器.kt:234)中找到您的文件夹。 在androidx.compose.ui.platform.WrappedComposition$setContent$1.调用( Package 器.kt:-1)中,您可以在一个或多个应用程序中使用它。 在这个平台上,您可以创建一个附加到窗口的Android合成视图(代码:kt:627)。 在android上。视图。视图。分派附加到窗口(View.java:20479) 在Android中,您可以查看视图组。 在Android中,您可以查看视图组,并将其附加到窗口中。 在Android中,您可以查看视图组,并将其附加到窗口中。 在Android中,您可以查看视图组,并将其附加到窗口中。 在Android中,您可以查看视图组,并将其附加到窗口中。 在Android上查看.
谁能帮帮我?谢谢

@Composable
@Preview
private fun Image1() {
    Box(modifier = Modifier.fillMaxWidth().wrapContentHeight()) {
        Image(
                asset = imageResource(id = R.mipmap.fit_static_image_1),
                contentScale = ContentScale.FillWidth,
        )
        Column(Modifier.padding(start = 16.dp, end = 16.dp).align(Alignment.CenterStart), horizontalAlignment = Alignment.Start) {
            Text(
                    color = getColor(id = R.color.white),
                    fontWeight = FontWeight.Bold,
                    fontSize = TextUnit.Sp(18),
                    text = dicString(id = R.string.fit_static_image_1_title),
                    textAlign = TextAlign.Start
            )
            Text(
                    text = dicString(id = R.string.fit_static_image_1_description),
                    color = getColor(id = R.color.white),
                    fontSize = TextUnit.Sp(14),
                    modifier = Modifier.padding(top = 4.dp),
                    textAlign = TextAlign.Start
            )
        }
    }
}
1zmg4dgp

1zmg4dgp1#

当从可组合对象返回时,由于缺少可组合对象构造中的数据,我遇到了这种情况。

val dataOrNull by viewModel.data.collectAsState(null)

Box {
    MyComposable(
        data = dataOrNull ?: return
    )
}

我通过在构建树之前返回来修复此问题

val dataOrNull by viewModel.data.collectAsState(null)

val data = dataOrNull ?: return

Box {
    MyComposable(
        data = data
    )
}
suzh9iv8

suzh9iv82#

我在compose版本compose_version = '1.1.0'上遇到了同样的问题。修复方法是从可组合函数中删除return语句。示例:

@Composable
fun Foo() {
    if (true) return // convert to if-else statement instead of return
    Text(text = "foo")
}
daolsyd0

daolsyd03#

我错误地使用了remember { },我试图在dicString函数中使用它来记住获得的字符串。这导致了该问题。我通过将资源ID作为参数添加到remember函数中修复了该问题。remember(id){ }

h5qlskok

h5qlskok4#

如果我的情况是用Koin依赖注入替换这个:

val viewModel: MyViewModel by viewModel()

通过以下方式:

val viewModel: MyViewModel = getViewModel()

解决了我的错误。
希望它能对某人有所帮助!

kx7yvsdv

kx7yvsdv5#

我的使用案例-
正在从BoxScope内部的if检查中调用return

Box() {
if (state.value == false) return

//doSomething()
}

将return替换为return@Box解决了此错误

Box() {
if (state.value == false) return@Box

//doSomething()
}

相关问题