我目前正在为我的应用程序开发主屏幕,但我遇到了一个问题.第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相关问答推荐

listOf(listOf(字符串))在lazyArchitect(lazyStream)中合成

如何清除导航抽屉中以前 Select 的项目(Jetpack Compose)

有人能帮我在应用程序上使用模拟位置时避免被发现吗?我已经反编译并粘贴了一个代码,S小文件

为什么它显示我的空白屏幕?

更改选定的切换轨道 colored颜色

如何使用react native下载android中/data/data/[应用程序包名称文件夹]/files中的文件

如何在Android Studio中删除项目

如何删除房间数据库?

DatePickerDialog (Android/Kotlin) 的两个问题

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

如何将一个 Composable 作为其参数传递给另一个 Composable 并在 Jetpack Compose 中显示/运行它

Android Transitions API - 在 24-48 小时后停止接收任何更新

处理程序 postDelayed 方法不起作用,kotlin 应用程序卡在启动画面上

调用时 listFiles() nullpointerexception

缺少类 com.google.android.datatransport.runtime.ForcedSender

compose 更改列表元素但lazyColumn不更改

房间创建三四表关系

在 jetpack compose 中使用 viewmodel 的最佳实践

在 jetpack compose 中使用 .shadow 和 Button 会导致问题

在delphi中将Jnet_uri转换为Tbitmap