【发布时间】:2015-07-01 21:45:17
【问题描述】:
我有一些让我难过的事情。我有一个带有 ViewPager 的片段(片段 A),其中包含三个片段(用于向左/向右滑动)。因此,如果在另一个片段中,在 onBackPressed() 方法中,我执行 getFragmentManager().popBackStack() 调用,片段 A 将再次可见(使用ViewPager of sub-fragments) 这是期望的状态。但是,对于 Fragment A 或 ViewPager 中没有任何方法表明 Fragment A/ViewPager 再次可见。
片段生命周期 (http://developer.android.com/guide/components/fragments.html) 中引用的任何片段方法都不应在“片段从后台堆栈返回布局”或在 OnPageChangeListener 中调用的任何方法时调用(是的,我确实调用 viewPager.片段 A 的 onCreateView 中的 setOnPageChangeListener(this)。
想过我可以在哪里看吗?
【问题讨论】:
-
这是您描述的情况吗? Frag-A 及其子片段是可见的。某些事件导致它们被 Frag-B 删除/替换并放入后台堆栈,使它们不可见。用户按下返回,导致 Frag-A 及其子片段从后台堆栈恢复到布局,使它们再次可见。一切正常,但您不知道如何确定 Frag-A 及其子片段是否可见。您链接的片段指南中的生命周期图显示了片段进入或退出后台堆栈时调用的方法。你不能从中得到可见的状态吗?
-
是的,您在所有方面都是正确的。不遵循 Android 文档中定义的生命周期。当 Frag-A 和包含的子片段的 ViewPager 可见时,这些方法都不会被调用。
标签: android android-fragments android-viewpager fragment-lifecycle