Несколько фрагментов на каждой странице BottomNavigationView - PullRequest
0 голосов
/ 02 марта 2019

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

1 Ответ

0 голосов
/ 02 марта 2019

Попробуйте:

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 всякий раз, когда вы загружаете фрагмент, добавляйте его, когда выфрагмент загрузки: fragmentTransaction.addToBackStack(null)

...