Вот как работают фрагменты меняются местами:
Код: Выделить всё
val appointmentsFragment = AppointmentsFragment()
val chatFragment = ChatFragment()
val journalFragment = JournalFragment()
val profileFragment = ProfileFragment()
lateinit var selectedFragment: Fragment
if (savedInstanceState == null) {
supportFragmentManager.commit {
setReorderingAllowed(true)
add(R.id.fragmentContainer, appointmentsFragment, appointmentsFragment.javaClass.simpleName)
selectedFragment = appointmentsFragment
}
}
bottomNavigation.setOnNavigationItemSelectedListener {
val selection = when(it.itemId) {
R.id.appointments -> appointmentsFragment
R.id.chat -> chatFragment
R.id.journal -> journalFragment
R.id.profile -> profileFragment
else -> { throw IllegalStateException("There are only 4 tabs.") }
}
supportFragmentManager.commit {
setReorderingAllowed(true)
// Detach previous fragment
detach(selectedFragment)
val tag = selection.javaClass.simpleName
if (supportFragmentManager.findFragmentByTag(tag) == null) {
add(R.id.fragmentContainer, selection, tag)
} else {
attach(supportFragmentManager.findFragmentByTag(tag)!!)
}
selectedFragment = selection
}
true
}
- Запустите приложение как обычно.
- Фоновое приложение и переключитесь на настройки, и включите или отключите режим «Темная тема».
- Переключитесь обратно в приложение, при необходимости переключите вкладки.
- Наблюдайте за поврежденным пользовательским интерфейсом.



Как вы можете видеть, что пользовательский интерфейс других фрагментов каким-то образом все еще находится на экране, хотя все фрагменты, содержащие эти части пользовательского интерфейса, были отсоединены. Кроме того, я подтвердил, что onDestroyView() вызывается для всех этих старых фрагментов, что делает то, как и почему их пользовательский интерфейс все еще виден, еще более загадочным. Следует также сказать, что когда тема переключается и пользователь снова переключается на приложение, все равно вызывается onDestroy MainActivity, что, я считаю, является стандартным.
Почему возникает эта проблема и как ее устранить? Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/790 ... ough-ondes