Android 我可以在viewpager中的内容之外向FragmentActivity添加片段吗?

Android 我可以在viewpager中的内容之外向FragmentActivity添加片段吗?,android,android-fragments,fragment,Android,Android Fragments,Fragment,我不熟悉碎片。我有一个活动extneds FragmentActivity并使用ViewPager在片段之间滑动 在其中一个片段中,我想启动一个新片段,它“在”视图页面中的内容之外。可以添加这样的片段吗?或者我需要用片段启动一个新的活动吗 现在我让它启动一个新的活动,但它非常慢 活动A 片段A 片段B 片段C 活动B 片段D 片段A 所以片段A可以启动acitvity B来获得片段D,但理想情况下,如果我可以在活动A中注入片段D,那就太酷了 希望这是有道理的。是的,你可以,但我强烈建议你避免,除

我不熟悉碎片。我有一个活动extneds FragmentActivity并使用ViewPager在片段之间滑动

在其中一个片段中,我想启动一个新片段,它“在”视图页面中的内容之外。可以添加这样的片段吗?或者我需要用片段启动一个新的活动吗

现在我让它启动一个新的活动,但它非常慢

活动A

片段A
片段B
片段C

活动B

片段D
片段A

所以片段A可以启动acitvity B来获得片段D,但理想情况下,如果我可以在活动A中注入片段D,那就太酷了


希望这是有道理的。

是的,你可以,但我强烈建议你避免,除非你有充分的理由这样做

ViewPager(我假设)托管在您的活动中。ViewPager从其适配器获取其视图。(碎片适配器或类似物)。因此,您可以告诉活动更改其布局(和/或隐藏Viewpager并显示另一个FrameLayout),也可以简单地启动另一个包含单个片段的活动。这也很好

搞乱ViewPager/适配器通常很复杂,您可能会浪费时间使其正常工作

另一方面,您可以将片段添加到ViewPager的适配器中,并使用适配器的getType返回不同类型的片段

因此,您可以执行以下操作(伪代码):

这会将片段d添加到viewpager的“顶部”,并切换到它

然后,适配器必须使用接口来确定必须实例化的片段类型

适配器的getItem看起来像…(还是伪代码)

等等……:)

mPagerAdapter.addFragmentDToTheDataAtPositionZero(); //longFancyName ;)
mPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(0, false);
    @Override
    public Fragment getItem(final int i) {

        final FragmentTypeInterface f = yourData.get(i);

        if (f.isD()) {
            return FragmentD.newInstance();
        } else {
            return OtherFragment.newInstance();
        }
    }