ser*_*nka 11 android android-fragments
背景:我写了一个自定义容器,它能够容纳三个片段.根据此容器的状态,只能看到两个或三个碎片.为了通知片段他们的可见性已更改,我尝试了两个选项:
我用各自的值调用了Fragment.setUserVisibleHint()方法.托管片段覆盖此方法并做出适当反应.这样就解决了.
我调用了FragmentTransaction.hide()和FragmentTransaction.show()方法来隐藏和显示片段.托管片段覆盖Fragment.onHiddenChanged()并根据需要进行响应.这也解决了.
我的问题是我对这些选项中的任何一个都不满意.我想将不可见的片段置于标准的暂停状态.这个选项的优点是我保持代码干净简单,因为我不需要覆盖任何特殊方法(如setUserVisibleHint()或onHiddenChanged()),我可以处理内部的所有内容onPause()和onResume()已经实现的内容.
问题:将片段置于暂停状态然后从该状态恢复的正确方法是什么?
更新:我也试过了FragmentTransaction.detach().这不是一个选项,因为它会破坏视图,这在我的情况下是不允许的.
听起来您想调用FragmentTransaction#attach和FragmentTransaction#detach来让您的片段通过与 FragmentPagerAdapter 相同的生命周期例程(请参阅此处的源代码)。
分离Fragmentwithdetach()将Fragment通过onPause,onStop最后是onDestroyView生命周期方法,然后当你重新附加它时attach(),将通过onCreateView,onStart最后是onResume生命周期方法。
您必须确保使用标签以及容器 ID,因为您可以将多个片段附加到单个容器,并且您必须能够从中获取Fragment引用,FragmentManager然后必须通过其标签完成。