如何从调用片段中删除片段?

时间:2016-04-13 11:04:56

标签: java android android-fragments

如何从他的调用片段中删除片段?

我搜索过这个东西,但根据我的要求,我没有得到解决方案。在我的应用程序中,有一个FragmentActivity具有viewPager

viewPager包含3个碎片。对于片段我正在使用FragmentStatePagerAdapter

假设有3个片段:ABC; D片段C也包含子片段E

我在E方法和片段onCreateView()的{​​{1}}方法中调用了片段onDestroy(),我删除了子片段C

当我将EviewPager移至CB移至B时,当我从{{1}回来时,会发生什么到A,现在显示的片段是A。现在,如果我滑动片段B应该显示,但代替片段B C的子片段,片段C在片段C之后显示然后片段C现在在这种情况下显示我还没有在片段E上看到片段E,子片段E没有与C交互,但为什么它在viewPager中被添加,< / p>

我试图在Eviewpager E方法中销毁子片段onPause(),但没有发生任何事情。请任何人帮助我。

onDestroy()

2 个答案:

答案 0 :(得分:0)

你请试试这些。

FragmentManager fragmentManager = getActivity().getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                Fragment currentFragment = fragmentManager.findFragmentById(R.id.frame_container);

                fragmentTransaction.remove(currentFragment);//remove current fragment

答案 1 :(得分:0)

  

当我将viewPager从C滑动到B,B从A滑到A时发生了什么 - 当我从A回到B时,现在显示的片段是B。

我以前就像你现在面对的那样。我正在注册和取消注册片段生命周期事件的监听器。但是在viewpager中,即使我切换到另一个片段,以前的片段永远不会被破坏,你可以check

在深入了解你的情况之前,我想提一下'off page limit'。所以你不能设置为零。检查此link。因此,当您设置0时,默认为1

viewpager.setOffscreenPageLimit(0);

如果我没有遗漏某些东西,在这种情况下,当你从C切换到B

  • 如果您在C之前访问了D片段,D将被销毁,B将被创建,C仍将存在。

假设你来自第一个案例(C到B,然后B到A)

  • C将被销毁,B将被生存,A将被创建

底线,使用ViewPager,您只有两个片段。一个是你正在互动,第二个(屏幕关闭)