You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Jetpack Compose应用白屏问题求助

Jetpack Compose应用白屏问题解决方法

问题分析

你的代码存在语法结构错误,导致应用编译或运行异常,进而出现白屏:

  1. 注解位置错误:@OptIn(ExperimentalMaterial3Api::class)放置位置不正确,应该标注在使用了ExperimentalMaterial3Api API的函数上(比如EnterNameScreen,因为用到了OutlinedTextField)。
  2. 函数未闭合:BirthdayGreeting函数缺少闭合的},导致后续onCreate方法的语法完全错误。
  3. 资源缺失风险:如果R.drawable.birthday_cake资源不存在,会引发资源找不到的异常,导致界面崩溃白屏。

修复步骤

  1. 将@OptIn注解移到EnterNameScreen函数上方。
  2. 给BirthdayGreeting函数补充闭合的}。
  3. 确保res/drawable目录下存在birthday_cake资源,或暂时注释掉Icon代码进行测试。
  4. 检查MyComposeApplicationTheme实现,避免背景与文字颜色一致(比如均为白色)导致视觉上的白屏。

修正后的完整代码

package com.example.birthdayproject

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.material3.OutlinedTextField
import androidx.compose.ui.unit.dp
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import com.example.birthdayproject.ui.theme.MyComposeApplicationTheme
import androidx.compose.material3.ExperimentalMaterial3Api

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyComposeApplicationTheme {
                var showGreeting by remember { mutableStateOf(false) }
                var name by remember { mutableStateOf("") }

                if (!showGreeting) {
                    EnterNameScreen { enteredName ->
                        name = enteredName
                        showGreeting = true
                    }
                } else {
                    BirthdayGreeting(name)
                }
            }
        }
    }

    @OptIn(ExperimentalMaterial3Api::class)
    @Composable
    fun EnterNameScreen(setName: (String) -> Unit) {
        var name by remember { mutableStateOf("") }

        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text(text = "Enter Birthday Person's Name:")
            Spacer(modifier = Modifier.height(16.dp))
            OutlinedTextField(
                value = name,
                onValueChange = { name = it },
                label = { Text("Name") }
            )
            Spacer(modifier = Modifier.height(16.dp))
            Button(onClick = { setName(name) }) {
                Text("Show Birthday Greeting")
            }
        }
    }

    @Composable
    fun BirthdayGreeting(name: String) {
        Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
            Column(
                modifier = Modifier.fillMaxSize(),
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                // 确保存在birthday_cake资源,否则注释此行测试
                Icon(
                    painter = painterResource(id = R.drawable.birthday_cake),
                    contentDescription = "Birthday Cake"
                )
                Spacer(modifier = Modifier.height(16.dp))
                Text(text = "Happy Birthday, $name!")
            }
        }
    }
}

额外检查项

  • 清理并重新构建项目:点击Android Studio工具栏的Build -> Clean Project,再执行Build -> Rebuild Project,排除缓存问题。
  • 查看Logcat日志:运行应用后切换到Logcat的Error级别,查看具体异常信息,这是定位白屏问题的核心依据。

内容的提问来源于stack exchange,提问作者prog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:35:21