初始化片段而未调用onCreate

时间:2019-04-06 12:55:32

标签: android android-fragments android-viewpager android-fragmentactivity

所以我在viewpager中有一个片段,它包含在一个片段中,该片段正在初始化,如调试器中所示,但没有onCreate,onCreateView或任何此类方法被调用。该活动包含一个底部导航视图,并包含4个此类片段,而此问题仅在1个此类片段中发生。

所有这些片段和viewpagers以及其中的片段都是在活动的oncreate上创建的。如果单击底部标签时将创建片段的逻辑移到该位置,则此问题将得到解决。

这怎么可能?

3 个答案:

答案 0 :(得分:1)

第一次显示viewpager时,仅创建当前活动的片段和两个直接相邻的片段。因此,第一页的片段,“向左滚动”时显示的页面的片段和“向右滚动”时显示的页面的片段。将第四个片段放在下一个相邻位置时,就会创建该片段。

因此,如果您在-a- [b] -c-d-这样的viewpager中有片段a,b,c,d,其中b是第一个可见页面,则在启动时只会创建a,b和c。当滚动到c -a-b- [c] -d-时,将调用片段d的onCreate。

答案 1 :(得分:0)

您可以通过在视图分页器适配器上将其设置为关闭“屏幕页面限制”来控制启动活动时预加载的页面/片段数。像这样

  • mViewPager.setOffScreenPageLimit(limit)

如果将limit设置为0,则只会加载第一个片段。

https://spotandroid.com/2016/11/23/android-tricks-viewpager-and-offscreen-tabs/

https://techcodegeek.wordpress.com/2015/06/23/android-viewpager-and-performance-improvements/

答案 2 :(得分:0)

需要更多细节来了解您的问题。您所提供的信息无法理解您面临的问题。