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

API 33下Kotlin实现Splash Screen崩溃问题求助

Android Splash Screen 崩溃问题解决

第一个错误:闪屏主题的postSplashScreenTheme配置错误

你把postSplashScreenTheme设成了Theme.SplashScreen,这会导致闪屏结束后Activity仍使用闪屏主题,直接引发主题冲突崩溃。这个属性必须指定你应用的正常主题(比如你的基础主题Theme.BookTFGNormal),而非闪屏主题本身。

修正后的主题代码:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="Theme.BookTFGNormal.MySplash" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">#FFFFFF</item>
        <item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="s">@drawable/icon_book</item>
        <!-- 替换为应用正常主题 -->
        <item name="postSplashScreenTheme">@style/Theme.BookTFGNormal</item>
    </style>
</resources>

第二个错误:installSplashScreen()与setContent调用顺序颠倒

installSplashScreen()必须在setContentView()(或Jetpack Compose的setContent{})之前调用,顺序反了会直接触发异常。

若使用传统XML布局:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 第一步:安装闪屏
        installSplashScreen()
        // 第二步:设置布局
        setContentView(R.layout.activity_main)
    }
}

若使用Jetpack Compose:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 第一步:安装闪屏
        installSplashScreen()
        // 第二步:设置Compose内容
        setContent {
            BookTFGNormalTheme {
                Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
                    // 你的界面内容写在这里
                }
            }
        }
    }
}

额外检查项

  • 确认@drawable/icon_book资源存在且格式合法(比如矢量图或适配尺寸的位图),避免资源加载失败导致崩溃。
  • 你引入的androidx.core:core-splashscreen:1.0.1是稳定版本,无需更换。

内容的提问来源于stack exchange,提问作者pablo simón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:35:26