如何暂停/恢复片段

ser*_*nka 11 android android-fragments

背景:我写了一个自定义容器,它能够容纳三个片段.根据此容器的状态,只能看到两个或三个碎片.为了通知片段他们的可见性已更改,我尝试了两个选项:

  1. 我用各自的值调用了Fragment.setUserVisibleHint()方法.托管片段覆盖此方法并做出适当反应.这样就解决了.

  2. 我调用了FragmentTransaction.hide()FragmentTransaction.show()方法来隐藏和显示片段.托管片段覆盖Fragment.onHiddenChanged()并根据需要进行响应.这也解决了.

我的问题是我对这些选项中的任何一个都不满意.我想将不可见的片段置于标准的暂停状态.这个选项的优点是我保持代码干净简单,因为我不需要覆盖任何特殊方法(如setUserVisibleHint()onHiddenChanged()),我可以处理内部的所有内容onPause()onResume()已经实现的内容.

问题:将片段置于暂停状态然后从该状态恢复的正确方法是什么?

更新:我也试过了FragmentTransaction.detach().这不是一个选项,因为它会破坏视图,这在我的情况下是不允许的.

Sim*_*mon 5

听起来您想调用FragmentTransaction#attachFragmentTransaction#detach来让您的片段通过与 FragmentPagerAdapter 相同的生命周期例程(请参阅此处的源代码)。

分离Fragmentwithdetach()Fragment通过onPauseonStop最后是onDestroyView生命周期方法,然后当你重新附加它时attach(),将通过onCreateViewonStart最后是onResume生命周期方法。

您必须确保使用标签以及容器 ID,因为您可以将多个片段附加到单个容器,并且您必须能够从中获取Fragment引用,FragmentManager然后必须通过其标签完成。

  • 我想要一些类似的东西,但又不破坏视图。否则所有的动画都会变得迟钝。事实上,我只想暂停/恢复。很奇怪他们没有提供这个选项。 (14认同)