在我的Android应用程序中,我有3个片段(MainFragment,FavoriteFragment,UserFragment)和bottomnavigationview。
如果我从Frag1-> Frag2-> Frag3
移开,然后按后退,返回Fragm2
,但我不想保存片段跟踪并关闭贴布
private fun loadFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.frameLayout, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
答案 0 :(得分:0)
如果我了解您的问题,您想让后退键将您的碎片退回而不是退出应用程序,对吗?
如果是这种情况,那么您需要实现自定义逻辑来“替换”片段onBackPressed()
override fun onBackPressed() {
// checking which is the current fragment and loading the proper one
when(supportFragmentManager.findFragmentById(R.id.frameLayout)){
is Fragment3 -> loadFragment(Fragment2.newInstance())
is Fragment2 -> loadFragment(Fragment1.newInstance())
else -> super.onBackPressed()
}
}
或者您也可以add()
片段。
private fun loadFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.add(R.id.frameLayout, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
由于要在加载片段时替换该片段,这意味着该堆栈仅具有该片段的一个实例,因此在调用后按时它将弹出唯一的实例并关闭应用程序。