第二次从backstack获取片段

时间:2017-03-06 11:02:31

标签: android android-fragments fragmentmanager

我目前正在研究Android的浏览器应用程序。我正在使用片段管理新标签。因此,当用户打开新标签B时,一切正常,然后再返回标签A.问题出现在A时,他再次尝试回到B.换句话说,当你试图弹出相同的片段时它不起作用第二次。

这就是我添加新标签片段的方式

    android.app.Fragment f1 = new FragmentHolder();
    allFragments.add(f1);
    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, f1).addToBackStack(fragmentTags[allFragments.size()-1]).commit();

这里我是如何弹回片段的

boolean chkFlag = getFragmentManager().popBackStackImmediate(currentTag.getFragmentTAG(),0);

我提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在您的活动中使用以下功能

private void loadFragmentAnimated(Fragment fragment, Bundle args, int containerId, String title)
    {
        fragment.setArguments(args);
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(containerId, fragment);
        fragmentTransaction.commitAllowingStateLoss();
    }

然后使用

添加片段
loadFragmentAnimated(c, null, R.id.container_name, "title");

使用

删除片段
getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentById(R.id.container_name)).commit();