FragmentStatePagerAdapter:不要在开头加载所有选项卡

时间:2014-08-20 13:47:49

标签: android tabs fragmentpageradapter

在我的Android应用中,我使用带有FragmentStatePagerAdapter的标签。我有很多选项卡,所以这是一个问题,FragmentStatePagerAdapter在应用程序启动时为所有选项调用onCreateView方法。这完全没用,因为当我打开选项卡时再次调用该方法。有没有办法禁止在开头为所有选项卡调用onCreateView方法(只应为当前选项卡和选项卡左右调用它)?

1 个答案:

答案 0 :(得分:0)

  

当应用程序启动时,FragmentStatePagerAdapter为所有这些方法调用onCreateView方法

ViewPager在递送PagerAdapter时会加载2-3页。只有在用户更改页面时才会创建其他页面。 ViewPager本身确保当前页面的任何一侧都有一个页面(除了页面范围的任何一端)。

  

这是完全没用的,因为当我打开一个标签

时再次调用该方法
仅在创建片段或发生配置更改(例如,屏幕旋转)时才会调用

onCreateView()FragmentStatePagerAdapter只保留一定数量的页面,因此如果用户挥动很多页面,FragmentStatePagerAdapter将丢弃现有的片段,并最终在用户将来返回时重新创建它们。

  

有没有办法禁止在开头为所有标签调用onCreateView方法

默认情况下它已经表现出来了。

例如,如果您执行this sample project,请将其更改为使用FragmentStatePagerAdapter,并向Log.e()的{​​{1}}添加onCreateView()次来电,您会看到最初显示EditorFragment时进行两次onCreateView()次调用,并在需要创建片段实例的每次滑动时另外调用。