首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当FragmentPagerAdapter在ViewPager和TabLayout中调用时,getItem()运行两次

当FragmentPagerAdapter在ViewPager和TabLayout中调用时,getItem()方法会运行两次。这是因为ViewPager和TabLayout的机制导致的。

ViewPager是一个用于展示多个Fragment的容器,而TabLayout是一个用于显示标签页的控件。当ViewPager和TabLayout结合使用时,TabLayout会根据ViewPager中的Fragment数量自动生成对应数量的标签页。

在ViewPager中,getItem()方法用于获取指定位置的Fragment。当ViewPager初始化时,会预加载当前Fragment及其相邻的Fragment,以提高用户体验。因此,getItem()方法会在初始化时被调用两次,分别获取当前Fragment及其相邻的Fragment。

在TabLayout中,每个标签页对应一个Fragment。当TabLayout与ViewPager结合使用时,TabLayout会根据ViewPager中的Fragment数量自动生成对应数量的标签页,并通过getItem()方法获取每个标签页对应的Fragment。

总结起来,当FragmentPagerAdapter在ViewPager和TabLayout中调用时,getItem()方法会运行两次,分别用于ViewPager的初始化和TabLayout的标签页生成。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

运行结果如下图: ? TabLayout的动态使用 布局文件我们可以很方便定义顶部/底部 导航的布局。...标签被重新选择时回 } }); } } 关于运行结果我就不上图了,跟上面的运行结果是一样的。...本例,也是我们显示TAB1的时候,ViewPager已经加载了TAB2,具体方式是通过instantiateItem方法,该方法内部调用了我们重写的getItem方法,TAB2所表示的Fragment...setUserVisibleHint(boolean isVisibleToUser)调用时Fragment实例化,即在ViewPager,由于ViewPager默认会预加载左右两个页面。...)}一致 * 该回方法你可以做一些加载数据操作,甚至是控件的操作

1.7K10
  • TabLayout基本使用

    前言 Tablayout继承自HorizontalScrollView,可以用作顶部标签效果、底部导航栏效果。一般多与ViewPager一起使用。 首先上几个效果图。...图: 使用方法 下面我们来看如何使用, 第一步,先在gradle引入支持包 implementation 'com.android.support:design:26.0.0' 第二步,布局文件添加布局...initViewPager(); initTabNormal(); } /** * 初始化ViewPager,方便后期与tabLayout关联 */...tab标签获取显示文字,是通过FragmentPagerAdapter的getPageTitle()方法。所以需要对FragmentPagerAdapter的getPageTitle方法进行重写。...比如很多的UI场景需求都是要求文字下面的短线是一个小于文字的固定值。再比如我们说的作为底部导航栏,如果直接设置tab的icon,会出现icon变形等问题。 所以我这里给一个终极的解决办法。

    1.3K20

    Carson带你学Android:底部顶部Tab导航栏快速实现-TabLayout+ViewPager+Fragment

    底部Tab菜单栏实现(FragmentTabHost+ViewPager+Fragment) 今天我手把手教大家如何使用TabLayout+ViewPager+Fragment的组合来实现顶部底部...(5.0可用) 1.2 ViewPager 定义:ViewPager是android扩展包v4包的类 作用:左右切换当前的view,实现滑动切换的效果。...,接收它自己的事件,并可以activity运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity,而且Fragment的生命周期直接受所在的activity的影响。...步骤1:Gradle添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...只需要在上面步骤5:定义主布局activity_main.xml中将TabLayoutViewPager的位置交换就可以了!

    1.6K21

    TabLayout+ViewPager+Fragment实现切页展示「建议收藏」

    : 创建存储多个Fragment实例的列表 创建PagerAdapter实例并关联到ViewpagerViewPager关联到Tablayout 根据需求改写Tablayout属性* 最后一步不是必须的...(int position)函数是返回当前TabLayout的标签标题的,当然,也可以不通过PagerAdapter的这个函数返回,采用下面的这种方式也可行(有多少个就addTab多少次): tabLayout.addTab...FragmentPagerAdapter。...确保了View已经准备好时,将mPrepare置为true,setUserVisibleHint确保了当前可见时,mIsVisible置为true,第一次加载完毕后则将mIsFirstLoad置为...其实ViewPager+Fragment的方式,ViewPager显示的就是Fragment中所创建的View,Fragment只是一个控制器,并不会直接显示于ViewPager之中,这一点容易被忽略

    2.8K10

    首页-底部&顶部Tab导航(菜单栏)的实现:TabLayout+ViewPager+Fragment

    详情请看 底部Tab菜单栏实现(FragmentTabHost+ViewPager+Fragment) 今天我手把手教大家如何使用TabLayout+ViewPager+Fragment的组合来实现顶部底部...(5.0可用) 1.2 ViewPager 定义:ViewPager是android扩展包v4包的类 作用:左右切换当前的view,实现滑动切换的效果。...2.它具有自己的生命周期,接收它自己的事件,并可以activity运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity,而且Fragment的生命周期直接受所在的...步骤1:Gradle添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...只需要在上面步骤5:定义主布局activity_main.xml中将TabLayoutViewPager的位置交换就可以了!

    4K20

    Material Design整理(八)——TabLayout

    如今,Android也有自带这种指示器的控件TabLayoutTabLayout存在于android design库,它提供了一个水平的布局来展示Tabs。...当然了,不仅可以不居中直接添加TabItem子标签,这样可变性不好,我们可以代码动态添加,节后会介绍到!...因为TabLayout一般会结合ViewPager使用,而标签内容,标签数量也可以随着ViewPager来改变。 下文会提到TabItem结合ViewPager动态添加。...);//添加到tabLayout } 结合第三步,创建Tab对象,对其设置文字图片 ---- 6、修改TabLayout的样式 Tablayout支持定制化修改,提供了不少自定义属性供开发者进行设置...与ViewPager关联 vp_content.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { private

    1.4K10
    领券