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

Jetpack Compose中Modifier链式调用引发点击事件异常

问题:Compose中Card意外触发其他Card的点击逻辑

我定义了一个父级Modifier作为多个Card组件的基础修饰符,通过then函数为每个Card链式添加启动对应Activity的clickable Lambda。但其中一个无需点击的Card却意外可点击,且会触发第一个Card的点击逻辑启动VehicleInfoActivity3。我尝试设置空Lambda也无效。

// 父级修饰符
val modifierCard = Modifier
                .height(140.dp)
                .width(140.dp)
                .padding(10.dp)
                .align(Alignment.CenterHorizontally)

// 第一个Card
Card(modifier = modifierCard.then(Modifier.clickable {context.startActivity(Intent(context, VehicleInfoActivity3::class.java))}),
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    elevation = CardDefaults.cardElevation(defaultElevation = 12.dp),
                    shape = RoundedCornerShape(7.dp)
                )
                {...}

// 第二个Card
Card(modifier = modifierCard.then(Modifier.clickable {context.startActivity(Intent(context, ReceivePortalActivity2::class.java))}),
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    elevation = CardDefaults.cardElevation(defaultElevation = 12.dp),
                    shape = RoundedCornerShape(7.dp)
                )
                {...}

// 第三个Card(不应可点击,但实际会触发第一个Card的点击逻辑启动VehicleInfoActivity3)
Card(modifier = modifierCard,
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    elevation = CardDefaults.cardElevation(defaultElevation = 12.dp),
                    shape = RoundedCornerShape(7.dp)
                )
                {...}

我尝试以下写法仍无效,依旧会启动VehicleInfoActivity3:

// 第三个Card
Card(modifier = modifierCard.then(Modifier.clickable { /* 空Lambda */ }),
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    elevation = CardDefaults.cardElevation(defaultElevation = 12.dp),
                    shape = RoundedCornerShape(7.dp)
                )
                {...}

以下写法初始时无点击效果,但跳转其他Activity返回后,该Card又变得可点击,且仍启动VehicleInfoActivity3:

// 第三个Card
Card(modifier = Modifier
                    .height(140.dp)
                    .width(140.dp)
                    .padding(10.dp),
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    elevation = CardDefaults.cardElevation(defaultElevation = 12.dp),
                    shape = RoundedCornerShape(7.dp)
                )
                {...}

编辑:问题已解决

我已找到问题根源:Modifier链式调用本身无问题。我的应用基于XML UI,正迁移到Compose,存在两个外观一致的MainActivity(一个XML版,一个Compose版),旧Activity会跳转回XML版MainActivity,只需将其从AndroidManifest.xml中移除即可解决。

内容的提问来源于stack exchange,提问作者Po-Ting Huang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:33