3

我在以下序列中的单个活动中有片段。

片段 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 新闻中使用以下代码。

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

请帮忙 。

4

1 回答 1

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();
}
于 2013-09-04T04:53:24.253 回答