Why is my fragment onCreate being called extensively whenever I page through my applications viewPager?

后端 未结 2 1231
小蘑菇
小蘑菇 2021-02-15 11:59

I\'m not quite understanding this fragment lifecycle business.

I have a pretty standard 3 page horizontal slider view Pager layout for a \"view details\" section of my a

2条回答
  •  情话喂你
    2021-02-15 12:52

    ViewPager is quite zealous in shutting down things it isn't currently using, and this is exactly what is happening here. The default behaviour is for ViewPager to "keep around" one page either side of the page being viewed, and destroy the rest. Hence in your 3-page view, page 3 gets destroyed when selecting page 1, then when page 2 is reselected page 3 is recreated. As you've noticed, page 2 only has onCreate(..) called once because it is always adjacent to, or is, the currently selected page.

    To solve this, simply set ViewPager.setOffscreenPageLimit(2). Then the ViewPager will keep all your Fragments. Obviously this isn't a good idea for a large number of Fragments, but for your case it should be fine.

提交回复
热议问题