解决ViewPager2+TabLayout懒加载问题,Fragment被创建多次

ViewPager2默认只加载当前页面,相当于官方处理了Fragment的懒加载问题,当你使用代码

     new TabLayoutMediator(tabLayout, viewPager, true, new TabLayoutMediator.TabConfigurationStrategy() {

            @Override

            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {

                tab.setText(titles.get(position));

            }

        }).attach();

此时当你滑动ViewPager2时,滑动到某个Fragment页面才会加载,执行onCreateView()方法,

但是当你手动点击TabLayout时,此时懒加载就会失效,onCreateView()会被执行多次,

原因就是...此时ViewPager2默认是平滑滚动的,滚动滑过的Fragment都会被加载,

只需修改代码

       new TabLayoutMediator(tabLayout, viewPager, true,false, new TabLayoutMediator.TabConfigurationStrategy() {

            @Override

            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {

                tab.setText(titles.get(position));

            }

        }).attach();

其中,第二个boolean参数为smoothScroll 一定要填false,便可实现懒加载

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容