我使用带有四页的BottomNavigationView。如果我想添加4个片段就可以了,但是当我想用一个BottomNavigationView页面中的旧片段替换新片段并在项目点击时恢复它,第一个片段再次打开。如何恢复最后一个片段?我应该在第一个BottomNavigationView中使用不同的FrameLayout吗?
试试这个:
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:fragmentTransaction.addToBackStack(null)
时添加此片段