Android Jetpack Compose调用自定义@Composable函数报注解错误如何解决
错误触发原因
你的报错并非来自AngleBtSetting的注解缺失,核心问题是调用Scaffold时的语法错误,导致后续lambda失去了Composable上下文:
- 正常运行的代码中,
Scaffold{ ... }使用Kotlin尾随lambda语法,直接将Scaffold要求的@Composable类型的content参数传入,lambda内部拥有Composable上下文,Text调用符合要求。 - 报错代码中你写了
Scaffold(){ ... },额外添加的空括号表示你已经完成Scaffold的参数传递(content参数使用默认的空实现),后续紧跟的{ ... }是普通的非Composable lambda,在其中调用属于Composable函数的Text,就会触发「调用Composable函数的方法必须添加@Composable注解」的错误。
解决方法
选择以下任意一种方案修改即可:
- 去掉
Scaffold后多余的空括号,恢复尾随lambda传参写法:
@Composable fun AngleBtSetting(){ Scaffold { innerPadding -> Text( modifier = Modifier.padding(innerPadding), text = "测试" ) } }
注:如果使用Material3版本的Scaffold,content lambda会默认传入
innerPadding参数,建议给根组件添加对应padding避免内容被顶部/底部栏遮挡。
- 保留括号写法时,将content逻辑放到参数括号内部:
@Composable fun AngleBtSetting(){ Scaffold( content = { innerPadding -> Text( modifier = Modifier.padding(innerPadding), text = "测试" ) } ) }
内容的提问来源于stack exchange,提问作者SakurajimaMaii
相关产品推荐
相关产品推荐

