Фрагмент пользовательского интерфейса виден через другие фрагменты после переключения темы, даже если вызывается onDestrAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Фрагмент пользовательского интерфейса виден через другие фрагменты после переключения темы, даже если вызывается onDestr

Сообщение Anonymous »

Это странно. У меня есть стандартное приложение, использующее навигацию по вкладкам с одним MainActivity и четырьмя Fragment, которые меняются местами всякий раз, когда пользователь нажимает на нижнюю вкладку.
Вот как работают фрагменты меняются местами:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»