关于Fragment 嵌套 ViewPager+Fragment 和 Fragment嵌套 PagerSlidingTabStrip+viewpager 不显示内容的问题

一、viewPager使用PagerAdapter 必须要实现4个函数

 

getCount();

isViewFromObject();

instantiateItem();

destroyItem();

 

二、ViewPager中嵌套Fragment 使用

1FragmentPagerAdapter

该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;

2FragmentPagerStateAdapter

该类的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。

 

注意:

只需要实现三个函数

1FragmentPagerStateAdapter(fragmentManager ft)FragmentPagerAdapter (fragmentManager ft)

//如果viewpagerFragmentfragmentManager 需要是用getChildFragmentManager()

2getItem()

3getCount()

 

如需要动态的加载数据刷新UI则实现

mTabNavigation.setOnPageChangeListener(newViewPager.OnPageChangeListener() {

 

            @Override

            public void onPageSelected(intposition) {

//将异步加载的数据再此处刷新到Fragment

 

            }

//…此处省略 其他两个重载方法

        });

 

三、不显示问题:重写如下方法会导致不显示内容

Public boolean isViewFromObject(Viewview,Objectobject){

Return view==object ;

}

 

四、关于Fragment嵌套PagerSlidingTapStrip

在遇到不显示数据的情况,一般会认为是 设置pagerslidingTabStrip 的问题,其实不显示数据大多数是因为设置viewPager的不正确而导致的问题,

pagerslidingTabStrip只负责将ViewPagerPagerTab绑定在一起。实现点击tab滑到对应的viewpager中。

唯一需要注意的的是要在PagerAdapterFragmentPagerAdapterFragmentPagerState中重载如下方法:

因为父类的方法中返回的是空,导致tab获取不到字符串,所以要重载该方法。

Public

CharSequencegetPageTitle(intposition){

Return 保存tab字符串的数组:tasString[position];

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值