我在以下序列中的单个 Activity 中有 fragment 。
fragment 1 --> fragment 2 --> fragment 3 --> fragment 4
我正在使用以下代码进行 fragment 交易。
mFragmentTransaction=mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container, mFragment,fragmentname);
mFragmentTransaction.addToBackStack(tag);
mFragmentTransaction.commit();
我想做的是当用户在 fragment 3 或 4 上然后按后退键 如果用户在 fragment 4 上,则 fragment 4 --> fragment 3 --> fragment 1。 如果用户在 fragment 3 上,则 fragment 3 --> fragment 1。
我在 onback press 中使用以下代码。
if(mFragmentManager.findFragmentByTag("fragment 3")!=null){
mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);
}else{
super.onBackPressed();
}
但它会导致按下后退时出现连线问题,如下所示。
fragment 4 --> fragment 1 而不是 fragment 4 --> fragment 3 --> fragment 1。 fragment 3 --> fragment 1
请帮忙。
最佳答案
您需要另一个嵌套的 if 语句。您有一个检查 fragment 是否为空的方法,但是您需要检查该 fragment 是否可见。
if(mFragmentManager.findFragmentByTag("fragment 3")!=null){
if(mFragmentManager.findFragmentByTag("fragment 3").isVisible()){
mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
else{
super.onBackPressed();
}
关于导致有线问题的 Android Fragment 返回堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605571/