Почему код скрытия статус бара отрабатывает до вызова onResume?
Есть 2 экрана. При нажатии на кнопку (на первом экране) открывается второй экран. На втором экране в onViewCreated() вызывается метод в котором происходит настройка edge-to-edge мода и устанавливается цвет статус бара. Проблема в том что данный метод начинает отрабатывать до того как верстка второго экрана становится видимой. Т.е видно как скрывается статус бар еще на первом экране. Почему это происходит? Используем навигацию с помощью транзакций и добавления фрагмента в стек.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setStatusBarSettings()
}
private fun setStatusBarSettings() {
val window = activity?.window ?: return
viewModel?.setEdgeToEdgeSettings(window, FragmentStateType.CREATING)
viewModel?.setStatusBarColor(window, FragmentStateType.CREATING)
}
Ниже методы ViewModel
fun setEdgeToEdgeSettings(window: Window, fragmentStateType: FragmentStateType) {
val isEnableEdgeToEdgeOnStartUp = repository.getIsEnableEdgeToEdgeModeOnStartup()
val isDisableEdgeToEdgeOnDestroy = repository.getIsDisableEdgeToEdgeModeOnDestroy()
when {
fragmentStateType == FragmentStateType.CREATING && isEnableEdgeToEdgeOnStartUp -> {
WindowCompat.setDecorFitsSystemWindows(window, false)
}
fragmentStateType == FragmentStateType.DESTROYING && isDisableEdgeToEdgeOnDestroy -> {
WindowCompat.setDecorFitsSystemWindows(window, true)
}
}
}
fun setStatusBarColor(window: Window, fragmentStateType: FragmentStateType) {
val statusBarColorOnStartUp = repository.getStatusBarColorOnStartUp()
val statusBarColorOnDestroy = repository.getStatusBarColorDestroy()
when {
fragmentStateType == FragmentStateType.CREATING && statusBarColorOnStartUp != null -> {
window.setColorStatusBar(statusBarColorOnStartUp)
}
fragmentStateType == FragmentStateType.DESTROYING && statusBarColorOnDestroy != null -> {
window.setColorStatusBar(statusBarColorOnDestroy)
}
}
}