Android Jetpack Compose预览中如何传递onClick点击事件参数
现有情况
- 已编写一个包含按钮的Compose组件,希望在设计视图中查看组件预览效果
遇到的问题
- 不知道如何在代码标记的位置声明并传递点击事件
onClick对象,不确定该需求是否可实现
@OptIn(ExperimentalPagerApi::class) @Composable fun OnBoardingActionButton( modifier : Modifier, pagerState: PagerState, onClick : () -> Unit ){ OnBoardingActionButtonContent(pagerState,onClick) } @OptIn(ExperimentalPagerApi::class) @Composable fun OnBoardingActionButtonContent(pagerState: PagerState, onClick: () -> Unit) { Row( modifier = Modifier.padding( horizontal = 40.dp), verticalAlignment = Alignment.Top, horizontalArrangement = Arrangement.Center ) { AnimatedVisibility( modifier = Modifier.fillMaxWidth(), visible = true ) { Button(onClick = onccl) { } } } } @OptIn(ExperimentalPagerApi::class) @Preview(showBackground = true) @Composable fun PrevOnBoardingActionButton(){ val pagerState : PagerState = PagerState(2) val onClick : () -> Unit -----------------------------> 此处该如何处理 OnBoardingActionButtonContent(pagerState, onClick) }
报错信息

解决方法
预览场景下不需要实现真实的点击逻辑,直接给onClick赋值空实现的lambda即可,完全满足类型校验要求,不会影响预览渲染:
val onClick: () -> Unit = {}
额外注意代码里的几处问题,否则修正onClick后依然无法正常预览/运行:
Button组件的onClick参数传入了拼写错误的onccl,需要替换为方法入参的onClick- 顶层
OnBoardingActionButton接收的modifier参数没有向下传递,建议补全到内部组件上避免后续样式不生效 - 新版Compose Pager建议使用
rememberPagerState创建PagerState实例,直接构造PagerState(2)在部分版本下会触发预览异常
修正后的预览函数代码参考:
@OptIn(ExperimentalPagerApi::class) @Preview(showBackground = true) @Composable fun PrevOnBoardingActionButton(){ val pagerState : PagerState = rememberPagerState(pageCount = { 3 }) val onClick: () -> Unit = {} OnBoardingActionButtonContent(pagerState, onClick) }
内容的提问来源于stack exchange,提问作者Devrath
相关产品推荐
相关产品推荐

