Stack of the Fragment's
Имеется некий вопрос. Я некое время изучаю android. Мне понадобилось реализовать ТРИ фрагмента в одной activity (между собой show/hide). Переход между фрагментами: делаю через интерфейс (определяю interface во фрагменте, activity наследует этот interface и переопределяет, и вызывается общий метод, который добавляет новый фрагмент, скрывает текущий или показывает, соответственно создается stack фрагментов.) Когда я дохожу до последнего фрагмента и нажимаю на кнопку back, то происходит переход на предыдущий фрагмент, НО отображаются все скрытые ранее фрагменты (первый и второй фрагмент), но в stack они ещё хранятся, ну и при повторном нажатие на кнопку back, скрывается второй фрагмент. Подскажите, в чем может быть проблема?
private fun pushFragments(tag: String, fragment: Fragment) {
val manager = supportFragmentManager
val ft = manager.beginTransaction()
if (manager.findFragmentByTag(tag) == null) {
ft.add(R.id.container, fragment, tag)
}
val fragmentFirst = manager.findFragmentByTag(Const.TAG_ENTRANCE)
val fragmentSecond = manager.findFragmentByTag(Const.TAG_SIGN_IN)
val fragmentThird = manager.findFragmentByTag(Const.TAG_PERSONAL_DATA)
if (fragmentFirst != null) {
ft.hide(fragmentFirst)
}
if (fragmentSecond != null) {
ft.hide(fragmentSecond)
}
if (fragmentThird != null) {
ft.hide(fragmentThird)
}
if (tag === Const.TAG_ENTRANCE) {
if (fragmentFirst != null) {
ft.show(fragmentFirst)
}
}
if (tag === Const.TAG_SIGN_IN) {
if (fragmentSecond != null) {
ft.show(fragmentSecond)
}
}
if (tag === Const.TAG_PERSONAL_DATA) {
if (fragmentThird != null) {
ft.show(fragmentThird)
}
}
ft.addToBackStack(null).commit()
Log.d(TAG, "Количество в стеке:" + supportFragmentManager.backStackEntryCount)
}
Ответы (1 шт):
Проблема в фоне. Установите на всех 3-ех фрагментах в main layout какой-нибудь background.