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

Kotlin应用Handler.postDelayed失效卡在启动页,ActionBar无法隐藏

问题解决方案

一、启动页卡住无法跳转的问题

你的应用实际启动的是MainActivity而非SplashScreen,因为清单文件里**MainActivity被设置为了启动入口(LAUNCHER)**,SplashScreen根本没有被启动的机会,自然不会执行跳转逻辑。

修复步骤:

  1. 修改AndroidManifest.xml,将启动入口转移到SplashScreen:
    • 把MainActivity中的<intent-filter>标签移到SplashScreen节点下
    • 将SplashScreen的android:exported改为true(启动Activity必须设置该属性为true)

修改后的清单文件关键片段:

<activity
    android:name=".SplashScreen"
    android:theme="@style/Theme.AppCompat.NoActionBar"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <meta-data
        android:name="android.app.lib_name"
        android:value="" />
</activity>

<activity android:name=".LandingPage"
    android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>

<activity
    android:name=".MainActivity"
    android:exported="false">
    <meta-data
        android:name="android.app.lib_name"
        android:value="" />
</activity>

二、supportActionBar?.hide()无法隐藏ActionBar的问题

你在super.onCreate(savedInstanceState)之前调用了supportActionBar?.hide(),此时ActionBar还未完成初始化,调用hide()不会生效。

修复步骤:

将supportActionBar?.hide()移到super.onCreate和setContentView之后:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_splash_screen)
    
    // 此时ActionBar已初始化,调用hide()可生效
    supportActionBar?.hide()

    Handler(Looper.getMainLooper()).postDelayed({
        val intent = Intent(this, LandingPage::class.java)
        startActivity(intent)
        finish()
    }, 3000)
}

另外,你已经在清单中给SplashScreen设置了@style/Theme.AppCompat.NoActionBar主题,直接通过主题就能隐藏ActionBar,无需额外写代码调用hide(),两种方式选其一即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:15:30