android - 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 上的错误仍然显示?此外,我们是否需要将活动保留为默认启动器,或者那里需要进行更改?
解决方案
你仍然需要在setContentView
这里打电话。所以代码看起来像:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
setContentView(R.layout.activity_splash_screen)
if(viewModel.isUserSignedIn()) {
navigateToMain()
} else {
navigateToAuth()
}
}
推荐阅读
- android - 无法在 Android 上交叉编译内核
- ios - ios可折叠可展开底片
- c# - C# 中的 XML 多重解析
- javascript - 使用带有香草 Web 组件的引导模板
- python - 在 python 中返回多个值时的不同结果(Cryptopal 挑战)
- mysql - 任何人都可以帮助我优化我的查询以减少结果时间吗?
- excel - I am getting an error for my code "Runtime error 424"
- c++ - 是否总是一次映射和设置分配 1 个项目?
- javascript - 使用函数式编程在 Typescript 中过滤数组 [filter, map, some, reduce etc]
- python - 函数只需要 1 个参数(给定 3 个)?