将片段添加到Backstack后片段没有正确替换

时间:2015-06-05 12:26:40

标签: android fragment fragmenttransaction

我的活动中有5个片段。 片段A是默认值。

并且有滑动菜单可以切换所有片段中的其他4个片段。 所以我想只将片段A添加到后台..所以 当从A调用片段B / C / D / E时,A将被添加到后台堆栈中。

现在说片段B,我从菜单抽屉中选择片段C.没有将它添加到Backstack。现在按下后退按钮我可以看到我的默认片段是正确的。但是,当我尝试从A更改任何片段B / C / D / E时,片段A仍然可见。

fA->添加到backstack-> fB-> fC->返回按钮 - > fA->添加到backstack ...-> fB ...但片段A仍然在这里可见。 对此有何解决方案?

这是我的代码:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.flContainer, fragment, fragment.getClass().getSimpleName());

    if (isAdd) {

        transaction.addToBackStack(fragment.getClass().getSimpleName());
    }
    transaction.commit();
    drawerLayout.closeDrawer(Gravity.RIGHT);

1 个答案:

答案 0 :(得分:0)

这样做

if (fragment != null) {

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .addToBackStack(fragment.getClass().getSimpleName())
                .replace(R.id.frame_container, fragment).commit();

        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }