首页 > 解决方案 > Android 12 启动画面条件启动画面

问题描述

我浏览了Android 12 启动屏幕上的文档以及迁移现有启动屏幕的文档,但没有明确提及如何根据条件选择启动屏幕。

具体来说,我之前添加了检查用户是否像这样登录:

class SplashScreenActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        if(viewModel.isUserSignedIn()) {
            navigateToMain()
        } else {
            navigateToAuth()
        }
    }
}

其中SplashScreenActivity被标记为默认启动活动。当我保持这样的状态时,Android Studio 会发出警告 - The application should not provide its own launch screen.

我按照指南对其进行了修改,并setContentView从活动中删除并调用了installSplashScreen.

class SplashScreenActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        installSplashScreen()

        if(viewModel.isUserSignedIn()) {
            navigateToMain()
        } else {
            navigateToAuth()
        }
    }
}

当我在模拟器上运行时,它似乎按预期工作,但 Android Studio 继续发出相同的警告。

这是迁移到 Android 12 启动画面的正确方法吗?如果是,为什么 Android Studio 上的错误仍然显示?此外,我们是否需要将活动保留为默认启动器,或者那里需要进行更改?

标签: androidandroid-studiokotlinsplash-screen

解决方案


你仍然需要在setContentView这里打电话。所以代码看起来像:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    installSplashScreen()
    setContentView(R.layout.activity_splash_screen)

    if(viewModel.isUserSignedIn()) {
        navigateToMain()
    } else {
        navigateToAuth()
    }
}

推荐阅读