Android 在两个连续的addToBackStack之后,supportFragmentManager.fragments大小为一
我有BottomNavigationView的主要活动。在BottomNavigationView的第一个选项卡中,我有一个片段。通过单击用户,我以这种方式打开了两个片段:Android 在两个连续的addToBackStack之后,supportFragmentManager.fragments大小为一,android,kotlin,fragment,Android,Kotlin,Fragment,我有BottomNavigationView的主要活动。在BottomNavigationView的第一个选项卡中,我有一个片段。通过单击用户,我以这种方式打开了两个片段: fragmentManager.beginTransaction() .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left,R.anim.slide_out_right)
fragmentManager.beginTransaction()
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left,R.anim.slide_out_right)
.replace(R.id.mainFragmentContainer, FinancialFragment.newInstance(),"FinancialFragment")
.addToBackStack("FinancialFragment")
.commit()
用不同的标签。当用户单击每个按钮时,我按以下代码从堆栈中弹出所有片段:
val fragments = supportFragmentManager.fragments
val manager = supportFragmentManager
val trans = manager.beginTransaction()
var fragmentList = readFragmentsNameFromAssets()
for (i in fragments.size - 1 downTo 0) {
val fragment = fragments[i]
if( fragment.tag ==fragmentList[0] || fragment.tag == fragmentList[1] || fragment.tag ==fragmentList[2] || fragment.tag ==fragmentList[3] || fragment.tag ==fragmentList[4] || fragment.tag ==fragmentList[5]
|| fragment.tag ==fragmentList[6] || fragment.tag ==fragmentList[7] || fragment.tag ==fragmentList[8] || fragment.tag ==fragmentList[9] || fragment.tag ==fragmentList[10] || fragment.tag ==fragmentList[11]
|| fragment.tag ==fragmentList[12] || fragment.tag ==fragmentList[13] || fragment.tag ==fragmentList[14] || fragment.tag ==fragmentList[15] || fragment.tag ==fragmentList[16]
|| fragment.tag ==fragmentList[17] || fragment.tag ==fragmentList[18] || fragment.tag ==fragmentList[19] ){
trans.remove(fragment).commit()
manager.popBackStack(fragment.tag, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}
}
我有一个问题:当我打开两个顺序片段时,supportFragmentManager.fragments大小为1,并且似乎第二个片段没有添加到堆栈中,也没有弹出,因此当我单击底部导航按钮时,就返回到上一个片段。您只启动一个事务,谁知道您要提交多少事务