请原谅我我不知道如何恰当地表达我的问题,但我会尽我所能的。

我把多个可合成材料放在一起制作了上面的屏幕。
我给了可组合的行一个onClick函数;
@Composable
fun MenuGrid(
modifier: Modifier = Modifier,
onMenuCardClick: (Int) -> Unit = {},
) {
LazyHorizontalGrid(
rows = GridCells.Fixed(3),
contentPadding = PaddingValues(horizontal = 16.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = modifier
.height(200.dp)
) {
items(MenuData) { item ->
MenuCard(
drawable = item.drawable,
text = item.text,
modifier = Modifier
.height(56.dp)
.clickable { onMenuCardClick(item.drawable + item.text) }
)
}
}
}就像我前面说的,我把多个可合成材料放在一起,形成上面的图像。我把多个可合成材料安排成一个可合成的,我叫MenuContentScreen;
@Composable
fun MenuContentScreen(modifier: Modifier = Modifier) {
Column(
modifier
.verticalScroll(rememberScrollState())
.padding(vertical = 16.dp)) {
MenuQuote()
MenuContentSection(title = R.string.favorite_collections) {
MenuGrid()
}
}
}然后,我在屏幕MenuScreen的主可组合上引用/调用了MenuScreen。(在NavHost中定义的)
@Composable
fun MenuScreen() {
MenuContentScreen(Modifier.padding())
}这就是问题所在的地方,因为onClick函数是在另一个可组合函数中定义的,所以不能将onClick函数用于MenuScreen;

所以,我的问题是有一种方法,我可以把MenuGrid上的onClick函数链接到MenuScreen上,也许可以在MenuScreen上创建一个参数,并将它分配给MenuGrid的onClick函数(我已经尝试过了,得到了val cannot be assigned),或者其他任何东西。
我将非常感谢任何帮助。我一直都是这样的人。请不要太小的信息。
提前谢谢。
发布于 2022-09-20 10:33:36
您需要携带onClick lambda直到您的MenuScreen可组合,例如
@Composable
fun MenuContentScreen(modifier: Modifier = Modifier,
onMenuCardClick: () -> Unit
) {
Column(
modifier
.verticalScroll(rememberScrollState())
.padding(vertical = 16.dp)) {
MenuQuote()
MenuContentSection(title = R.string.favorite_collections) {
MenuGrid(){
onMenuCardClick()
}
}
}
@Composable
fun MenuScreen(
onMenuCardClick: () -> Unit
) {
MenuContentScreen(Modifier.padding(), onClick= onMenuCardClick)
}在导航图中,不将navController传递给MenuScreen
打电话
MenuContentScreen {
navController.navigate()
}https://stackoverflow.com/questions/73785065
复制相似问题