能否在所有Activity中使用Compose的setContent方法?
解决第二个Activity中setContent使用问题
针对你在CheatActivity中使用setContent的问题,以下是具体的修复和实现方案:
核心修改:完善CheatActivity的setContent实现
需要在setContent中填充有效的Composable内容,同时确保Activity正确集成Jetpack Compose:
class CheatActivity : AppCompatActivity() { private var answerIsTrue = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 接收从主Activity传递的答案参数(根据业务需求调整) answerIsTrue = intent.getBooleanExtra("EXTRA_ANSWER_IS_TRUE", false) setContent { // 应用Material主题,保证Composable样式正常渲染 MaterialTheme { CheatScreen(answerIsTrue = answerIsTrue) } } } } // 定义CheatActivity对应的UI Composable @Composable fun CheatScreen(answerIsTrue: Boolean) { Column( modifier = Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { // 显示答案内容 Text( text = if (answerIsTrue) "正确答案:True" else "正确答案:False", fontSize = 24.sp, fontWeight = FontWeight.Bold ) Spacer(modifier = Modifier.height(16.dp)) // 返回按钮,关闭当前Activity Button(onClick = { (LocalContext.current as Activity).finish() }) { Text(text = "返回") } } }
补充优化:完善主Activity的传参逻辑
如果需要将答案数据传递到CheatActivity,修改BuildContent中的按钮点击逻辑:
@Composable fun BuildContent() { val context = LocalContext.current // 示例:替换为业务实际的答案布尔值 val currentAnswer = true Button(onClick = { val intent = Intent(context, CheatActivity::class.java).apply { putExtra("EXTRA_ANSWER_IS_TRUE", currentAnswer) } context.startActivity(intent) }) { Text(text = "Cheat!") } }
必要依赖检查
确保你的Module级build.gradle文件中已添加Jetpack Compose核心依赖:
dependencies { // Jetpack Compose核心库 implementation "androidx.compose.ui:ui:1.5.4" implementation "androidx.compose.material:material:1.5.4" // Activity与Compose集成库 implementation "androidx.activity:activity-compose:1.8.2" }
内容的提问来源于stack exchange,提问作者Yegor Emelyanov
相关产品推荐
相关产品推荐

