Rob*_*arl 113 android android-fragments
假设我希望将某个容器视图中的当前片段替换为另一个容器视图.使用替换更好吗?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
...或以下,显示和隐藏?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.hide(oldFragment);
ft.show(newFragment);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
这种方法更有效率吗?无法找到有关何时使用这些方法的大量信息,或者它们如何影响所涉及碎片的生命周期.谢谢!
小智 129
你应该考虑你打算用片段做什么来决定要遵循的路径.如果您使用FragmentTransaction来隐藏片段,那么它仍然可以处于其生命周期的运行状态,但是它的UI已经从窗口中分离出来,因此它不再可见.因此,您可以在技术上仍然与片段进行交互,并在以后需要时重新附加其UI.如果你替换了片段,你实际上是将它从容器中拉出来,它将经历生命周期中的所有拆解事件(onPause,onStop等),如果由于某种原因你再次需要该片段,你将不得不将其插回到容器中,让它再次运行所有初始化.
如果您很有可能再次需要该片段,那么只需隐藏它,因为重绘它的布局比完全重新初始化它更便宜.