Я пытаюсь показать навигацию материала снизу внутри фрагмента. Мой навигационный вид снизу содержит три фрагмента. Я решаю проблему, когда фрагмент создает новый экземпляр каждый раз, когда мы выбираем элемент навигации. Но настоящая проблема возникает, когда я перехожу к другому фрагменту из своего Навигационного окна. Вот как выглядит моя структура нижней навигации.
Основной фрагмент (все следующие элементы являются нижними элементами навигации внутри основного фрагмента)
- Домашний фрагмент
- Уведомление Фрагмент
Фрагмент поиска
Вот как я добавляю, показываю и удаляю фрагмент с помощью Fragment Manager. Это функция расширения.
fun FragmentManager.hideAndShowFragment(
newFragment: Fragment, containerId: Int, hideFragmentInstance: Fragment? = null
) {
beginTransaction().apply {
if (hideFragmentInstance == null) {
add(containerId, newFragment)
commit()
return
}
if (fragments.contains(hideFragmentInstance))
hide(hideFragmentInstance)
if (fragments.contains(newFragment))
show(newFragment)
else add(containerId, newFragment)
commit()
}
}
В приведенном выше коде первое условие для случая, когда фрагмент не отображается и не нужно скрывать предыдущий фрагмент. И затем, если FragmentManager List<Fragment>
содержит предыдущий фрагмент, сначала скрыть, а затем показать новый фрагмент соответственно.
И вот как я вызываю эту функцию расширения.
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) : View {
///// other stuff
bottomNav.setOnNavigationItemSelectedListener { menuItem ->
val previousFragment = getCurrentShowingFragment(currentId)
val newFragment = getNewFragment(menuItem.itemId)
childFragmentManager.hideAndShowFragment(newFragment, CONTAINER_ID, previousFragment)
currentId = menuItem.itemId
}
// First time
childFragmentManager.hideAndShowFragment(getNewFragment(currentId), CONTAINER_ID, null)
}
Теперь, когда я пытаюсь перейти к другому фрагменту с помощью Navigation Drawer и вернулся, нажав кнопку «назад», текущий показ фрагмента с отображением прилипает к экрану, даже если я пытаюсь нажать на другие элементы навигации внизу, он просто никогда не исчезает.
Вот видео демонстрация .
Спасибо за ваше время.