You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose预览中如何传递onClick点击事件参数

现有情况
  • 已编写一个包含按钮的Compose组件,希望在设计视图中查看组件预览效果
遇到的问题
  • 不知道如何在代码标记的位置声明并传递点击事件onClick对象,不确定该需求是否可实现
对应代码文件:OnBoardingActionButton.kt
@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后依然无法正常预览/运行:

  1. Button组件的onClick参数传入了拼写错误的onccl,需要替换为方法入参的onClick
  2. 顶层OnBoardingActionButton接收的modifier参数没有向下传递,建议补全到内部组件上避免后续样式不生效
  3. 新版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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:36:16