我按以下顺序在单个活动中使用片段。
片段1 - >片段2 - >片段3 - >片段4
我正在使用下面的代码进行片段交易。
mFragmentTransaction=mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container, mFragment,fragmentname);
mFragmentTransaction.addToBackStack(tag);
mFragmentTransaction.commit();
我想要做的是当用户在片段3或4上然后在背面按下时 如果用户在片段4上,那么片段4 - >片段3 - >片段1。 如果用户在片段3上,则片段3 - >片段1。
我在onback press中使用以下代码。
if(mFragmentManager.findFragmentByTag("fragment 3")!=null){
mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);
}else{
super.onBackPressed();
}
但它会导致背面的有线问题如下。
片段4 - >片段1而不是片段4 - >片段3 - >片段1。 片段3 - >片段1
请帮忙。
答案 0 :(得分:4)
您需要另一个嵌套的if语句。您可以检查片段是否为空,但是您需要检查该片段是否可见。
if(mFragmentManager.findFragmentByTag("fragment 3")!=null){
if(mFragmentManager.findFragmentByTag("fragment 3").isVisible()){
mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
else{
super.onBackPressed();
}