我目前正在为我的应用程序开发主屏幕,但我遇到了一个问题.第val context = LocalContext.current行导致错误,指出"@Composable调用只能从@Composable Function的上下文中发生".你能就如何解决这一问题提供一些指导吗?为了让您更好地理解,下面是完整的函数:

@Composable
fun HomeScreen(navController: NavController) {
    // Use a Box to allow for layering of composables on top of each other
    // Used to keep the content at the bottom center of the screen.
    Box(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp), // Apply padding around the box
        contentAlignment = Alignment.BottomCenter // Align content to the bottom center
    ) {
        // Column to stack buttons vertically
        Column(
            // Center column contents horizontally
            horizontalAlignment = Alignment.CenterHorizontally,
            // Space between the column contents
            verticalArrangement = Arrangement.spacedBy(8.dp)
        ) {
            // Button to NAVIGATE TO THE BENEFITS SCREEN
            Button(
                onClick = { navController.navigate("sleep_benefits") },
                // Apply padding to only the top of the first button to push it upwards
                modifier = Modifier.padding(bottom = 1.dp)
            ) {
                Text(text = "Learn About Sleep Benefits")
            }
            // Button for USER LOGIN
            Button(
                onClick = { /* TODO: Add navigation to login screen here */ }
            ) {
                Text(text = "Login to Track Sleep")
            }

            // New Sign Up Button
            Button(
                onClick = {
                    val context = LocalContext.current
                    context.startActivity(Intent(context, SignInActivity::class.java))
                },
                modifier = Modifier.padding(top = 8.dp)
            ) {
                Text(text = "Sign Up")
            }
        }
    }
}

我试着看这个:Error: "@Composable invocations can only happen from the context of a @Composable function"

推荐答案

替换:

            // New Sign Up Button
            Button(
                onClick = {
                    val context = LocalContext.current
                    context.startActivity(Intent(context, SignInActivity::class.java))
                },
                modifier = Modifier.padding(top = 8.dp)
            ) {
                Text(text = "Sign Up")
            }

有:

            val context = LocalContext.current

            // New Sign Up Button
            Button(
                onClick = {
                    context.startActivity(Intent(context, SignInActivity::class.java))
                },
                modifier = Modifier.padding(top = 8.dp)
            ) {
                Text(text = "Sign Up")
            }

Android相关问答推荐

Android配置设置. gradle不同应用风格

如何检测HitTest是否命中给定的网格对象?

Android Gradle/Groovy,如何将文件复制到APK

StateFlow集合AsState没有更新他的值Jetpack Compose导航

react 本机生成失败,出现异常.错误:无法确定';<;宏/>;的类型

安卓喷气背包组成倒计时动画

在一列中垂直对齐两个框

(已解决)从最近的应用程序打开应用程序时出错

如何显示具体的商品数量?

Android WebView 不会在滚动端加载新内容

如何在每次显示可组合项时执行代码(并且只执行一次)

当 EditText 用于在 android studio 中将字符串发送到 firebase 时,仅允许安全调用错误

如何在 Jetpack Compose 中创建无限pager

Electric Eel 后 Gradle 项目同步失败 | 2022.1.1更新

根据 Jetpack Compose 中的生命周期正确处理变量/函数

在 Jetpack Compose 中更改列中子项的对齐方式

如何在行/列/卡片 compose 中添加左边框

如何在 Jetpack Compose 中更改 ModalNavigationDrawer 的抽屉容器 colored颜色 ?

Android Jetpack Compose - 找不到 R.drawable?

使 Compose LazyColumn 的最后一项填满屏幕的其余部分