我在使用 Jetpack Compose 时遇到 Android 界面选项卡中的文本和图标问题

问题描述 投票:0回答:1

在此代码中,在文本参数中,我收到错误: @Composable 调用只能从 @Composable 函数的上下文中发生,图标也发生同样的情况:@Composable 调用只能从 @ 的上下文中发生可组合函数

如果我删除文本参数和图标参数,代码可以正常工作,但我想在每个选项卡中显示文本和图标。我已经导入了 androidx.compose.material3.Tab 和依赖实现(platform(“androidx.compose:compose-bom:2024.04.01”)),我不知道还能尝试什么

PrimaryTabRow(
                    selectedTabIndex = selectedTabIndex
                ) {
                    tabItems.forEachIndexed { index, item ->
                        Tab(
                            selected = (selectedTabIndex == index),
                            onClick = {
                                selectedTabIndex = index
                            },
                            text = { Text(text = item.titulo)},
                            icon = {
                                Icon(
                                    imageVector = if (index == selectedTabIndex) item.selecIcon else item.unselecIcon,
                                    contentDescription = item.titulo
                                )
                            }
                        ) {

                        }
                    }
                }
android kotlin tabs android-jetpack-compose material-design
1个回答
0
投票

您需要删除

{ }
之后的空 lambda(大括号
Tab(...)
)。

原因是有两种 Tab 可组合项,一种带有参数

text
,另一种带有内容 lambda。您尝试使用这两个参数,因此编译器无法决定选择两个可组合项中的哪一个,并且暂时不需要。

对于代码的其余部分,它假设有一些函数具有您指定的所有参数,但它不知道它们是什么类型,因此

text
icon
lambda 被假设为简单的 lambda乍一看看起来还不错。但是您在这些 lambda 中使用的
Text
可组合项和
Icon
可组合项检测到它们不是从可组合 lambda 调用的,因此您的错误。

您偶然发现的错误是继第一个无法找到

Tab
的错误之后发生的。如果您在看到以下错误时就开始了,那么它们可能已经消失了。

© www.soinside.com 2019 - 2024. All rights reserved.