我使用具有四个页面的 BottomNavigationView 。如果要向其中添加4个片段,可以,但是当我要在 BottomNavigationView 页面之一中用旧片段替换新片段并在单击项目时将其还原时,第一个片段再次打开。如何还原最后一个片段?我应该在第一个 BottomNavigationView 中使用不同的 FrameLayout 吗?
答案 0 :(得分:0)
尝试一下:
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()
}
}
注意:每当您加载片段时,也会向后堆栈添加片段,在加载片段时将其添加到后退:fragmentTransaction.addToBackStack(null)