Compose按钮传入Lambda未执行问题排查(Kotlin高阶函数)
问题原因与修复方案
错误出在ShowDetails组件的Button点击事件中——你只是引用了clickAction这个Lambda变量,但没有执行它。Lambda作为函数类型,必须通过()调用才能触发其内部代码逻辑。
修复后的代码
修正ShowDetails函数
@Composable fun ShowDetails(clickAction: () -> Unit){ Button(onClick = { clickAction() // 添加上括号,执行传入的Lambda逻辑 }) { Text(text = "Show Details") } }
可选优化:更规范的Context获取方式
Compose中推荐通过LocalContext.current获取Context,而非手动传入,这样能避免空值风险:
@Composable fun MainScreen(){ val context = LocalContext.current Column { ScreenName(name = "Main Screen") ShowDetails{ Intent(context, DetailsActivity::class.java).also { i -> context.startActivity(i) } } } }
内容的提问来源于stack exchange,提问作者dev.vinod
相关产品推荐
相关产品推荐

