【问题标题】:getFragments() method only returns fragments of viewpager AndroidgetFragments() 方法只返回viewpager Android的片段
【发布时间】:2014-09-05 22:29:26
【问题描述】:

我在我的应用程序中使用 View pager 来获取我的列表片段(A、B、C、D)。单击列表视图中的项目(例如片段 A)时,会显示详细的片段(E)。由于显而易见的原因,片段 E 不是视图寻呼机的一部分。

此时,如果我使用 fragmentmanager 的 getFragments() 方法,我只会得到视图分页器片段(A、B、C、D)而不是 E。在遍历视图分页器片段时,其中一个片段view pager 出来是可见的,尽管片段 E 在顶部并且可见。

用非视图寻呼机片段替换视图寻呼机片段的正确方法是什么?为什么 Fragment E 没有添加到 Fragment Manager 堆栈?

这是我用片段 E 替换片段 A 时使用的代码段。

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.detach(fragA);
fragmentTransaction.add(viewId, fragE);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

我这样做的原因是,因为在某些异步调用完成时,我想刷新当前对用户可见的片段。

谢谢, 罗尼

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    你试过替换吗?

    FragmentTransaction fragmentTransaction =getActivity().getSupportFragmentManager().beginTransaction(); 
    // Replace the fragment in the container view with the E fragment, 
    // and add the transaction to the back stack 
    fragmentTransaction.replace(R.id.container,FragmentE.newInstance(),MainActivity.FRAGMENT_TAG_E); 
    fragmentTransaction.addToBackStack(null); // Commit the transaction
    fragmentTransaction.commit();
    

    【讨论】:

      【解决方案2】:

      替换片段看起来是一种低效的解决方案,因为它会不必要地重新创建片段。现在我已经通过为所有片段维护一个我自己的列表来解决它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多