Несколько фрагментов на каждой странице BottomNavigationView

#android #android-fragments #bottomnavigationview #android-framelayout

#Android #android-фрагменты #bottomnavigationview #android-framelayout

Вопрос:

Я использую BottomNavigationView с четырьмя страницами. Если я хочу добавить к этому 4 фрагмента, это нормально, но когда я хочу заменить новый фрагмент старым фрагментом на одной из страниц BottomNavigationView и восстановить его при нажатии элемента, первый фрагмент снова откроется. Как я могу восстановить последний фрагмент? Должен ли я использовать другое FrameLayout в первом BottomNavigationView?

Комментарии:

1. Нет. Используйте fragment как дочерний элемент основного фрагмента. Узнайте больше о менеджере дочерних фрагментов.

Ответ №1:

Попробуйте это:

 bottomNavView.setOnNavigationItemSelectedListener(object : BottomNavigationView.OnNavigationItemSelectedListener {
            override fun onNavigationItemSelected(item: MenuItem): Boolean {

                clearAllBackStack()
                when (item.itemId) {
                    R.id.itemHome -> {
                      // load fragment here
                    }

                    R.id.itemMyAccount -> {
                      // load fragment here
                    }

                    R.id.itemSettings -> {
                       // load fragment here
                    }

                    R.id.itemNotfications -> {
                        // load fragment here
                    }
                }
                return true
            }
        })
  

добавьте этот метод:

  fun clearAllBackStack() {
        for (i in 0 until supportFragmentManager.backStackEntryCount) {
            supportFragmentManager.popBackStack()
        }
    }
  

Примечание: также добавляйте фрагмент в backstack всякий раз, когда вы загружаете fragment, добавляйте это при загрузке fragment: fragmentTransaction.addToBackStack(null)

Комментарии:

1. Итак, как я могу показать фрагмент из последнего состояния, когда я изменил элемент в BottomNavigationView, щелкнул?

2. Я не понял, какой поток вы хотите?

3. Например, в первом элементе BottomNavigatioView у меня есть фрагмент, который показывает список в нем. Если я нажимал на каждый элемент этого списка, открывался новый фрагмент, показывающий подробную информацию об элементе этого списка. Затем я переключился на другой элемент BottomNavigationView и снова вернулся к первому элементу BottomNavigationView. Теперь я хочу видеть фрагмент сведений, а не фрагмент списка.

4. добавьте этот FragmentTransaction.addToBackStack(null) для каждого фрагмента, который вы запускаете, и дайте мне знать, что произойдет

5. @behrooz.fard вы нашли решение? То, что говорит Сурадж, выглядит как неправильное