Jetpack Compose添加TopAppBar遇两类错误求助
解决Jetpack Compose中TopAppBar的两类错误
错误根源
你的AppBar函数里,TopAppBar的调用存在两处问题:
- 多余的空lambda参数不符合函数签名
- 可能混淆了Material和Material3版本的
TopAppBar参数结构
修正代码
若使用Material库(androidx.compose.material.TopAppBar)
移除TopAppBar末尾多余的空lambda即可:
@Composable fun MainScreen() { Scaffold(topBar = { AppBar() } ) { Surface(modifier = Modifier .fillMaxSize() .padding(it)) { Column() { ProfileCard() } } } } @Composable fun AppBar(){ TopAppBar( title = { Text(text = "Hi") } ) }
若使用Material3库(androidx.compose.material3.TopAppBar)
确保调用正确的重载,Material3的TopAppBar无需额外的末尾lambda:
@Composable fun MainScreen() { Scaffold(topBar = { AppBar() } ) { Surface(modifier = Modifier .fillMaxSize() .padding(it)) { Column() { ProfileCard() } } } } @Composable fun AppBar(){ androidx.compose.material3.TopAppBar( title = { Text(text = "Hi") } ) }
错误解释
- @Composable invocations can only happen from the context of a @Composable function:你添加的末尾空lambda不是
@Composable上下文,编译器误判该位置可能存在非法的Composable调用,移除多余lambda即可解决。 - None of the following functions can be called with the arguments supplied:
TopAppBar没有对应你传入的参数组合的重载(title参数后额外加空lambda),参数不匹配导致此错误。
内容的提问来源于stack exchange,提问作者Abhilash R
相关产品推荐
相关产品推荐

