Jua*_*los 6 kotlin androidx android-jetpack-compose
我是 的新手Jetpack Compose
,我正在尝试在按钮内实现一个功能,但它给出了以下错误:
\n\n@Composable 调用只能在 mContext.startActivity(Intent(mContext,\nMainScreen()::class.java)) 中的\n@Composable 函数的上下文中发生
\n
@Composable\n fun AdminAuth() {\n Column(\n modifier = Modifier\n .fillMaxSize()\n .padding(20.dp),\n horizontalAlignment = Alignment.CenterHorizontally,\n verticalArrangement = Arrangement.Center\n ) {\n var password by rememberSaveable { mutableStateOf("") }\n var passawordVisibility by remember { mutableStateOf(false) }\n \n val icon = if (passawordVisibility)\n painterResource(id = R.drawable.ic_visibility)\n else\n painterResource(id = R.drawable.ic_visibility_off)\n Text(text = "Insira a senha do usu\xc3\xa1rio Master:", fontSize = 15.sp)\n OutlinedTextField(\n value = password, \n onValueChange = {\n password = it\n },\n placeholder = { Text(text = "Senha") },\n label = { Text(text = "Senha") },\n trailingIcon = {\n IconButton(onClick = {\n passawordVisibility = !passawordVisibility\n }) {\n Icon(\n painter = icon,\n contentDescription = "\xc3\x8dcone de visibilidade"\n )\n }\n },\n keyboardOptions = KeyboardOptions(\n keyboardType = KeyboardType.Password\n ),\n visualTransformation = if (passawordVisibility)\n VisualTransformation.None\n else PasswordVisualTransformation()\n )\n \n val mContext = LocalContext.current\n OutlinedButton(\n onClick = {\n if (password.equals("Abac@xi123")) {\n mContext.startActivity(Intent(mContext, MainScreen()::class.java))\n }\n },\n modifier = Modifier\n .fillMaxWidth()\n .padding(35.dp),\n ) {\n Text(text = "Entrar")\n }\n \n }\n }\n \n @Composable\n @Preview\n fun AdminAuthPreview() {\n Column(\n modifier = Modifier\n .fillMaxSize()\n .background(Color.White),\n horizontalAlignment = Alignment.CenterHorizontally,\n verticalArrangement = Arrangement.Center\n ) {\n AdminAuth()\n }\n }\n
Run Code Online (Sandbox Code Playgroud)\n
startActivity
调用inside没有什么问题onClick
,但是你不应该调用MainScreen's
构造函数(假设它是一个Activity
),你可以简单地删除括号就可以了。
onClick = {
if (password.equals("Abac@xi123")) {
mContext.startActivity(Intent(mContext, MainScreen::class.java))
}
}
Run Code Online (Sandbox Code Playgroud)
但我怀疑MainScreen
这只是另一个@Composable
屏幕,而不是Activity
您想要导航到的屏幕,并且您遇到了该错误,因为
不能在不可组合函数中调用可组合函数
就像您看到的编译错误一样。
我建议进一步阅读,尤其是观看实时编码,您将亲眼目睹如何从可组合屏幕导航到另一个屏幕。
归档时间: |
|
查看次数: |
6742 次 |
最近记录: |