【问题标题】:Get fragment from backstack for second time第二次从后台获取片段
【发布时间】:2017-03-06 11:02:31
【问题描述】:

我目前正在开发适用于 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);

提前感谢您的帮助。

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

    在您的 Activity 中使用以下函数,

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

    【讨论】:

    • 感谢您的建议,但是我将如何在没有标签的情况下跟踪 backstack 中的所有片段?
    • 您可以通过容器 id 跟踪片段
    • 请参考这个 [post] (stackoverflow.com/questions/6374170/…)
    • 这不是从后台获取片段,您只是删除并重新创建它?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多