Android Fragment后台堆栈导致有线问题

时间:2013-09-04 04:46:32

标签: android android-fragments

我按以下顺序在单个活动中使用片段。

片段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

请帮忙。

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();
}