您的位置:首页 > 其它

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

2017-03-27 18:35 2056 查看
一、viewPager使用PagerAdapter
必须要实现4个函数
 
getCount();
isViewFromObject();
instantiateItem();
destroyItem();
 
二、ViewPager中嵌套Fragment
使用
1)FragmentPagerAdapter

该类内的每一个生成的 Fragment
都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;
2)FragmentPagerStateAdapter
该类的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
 
注意:
只需要实现三个函数
1)FragmentPagerStateAdapter(fragmentManager
ft)、FragmentPagerAdapter
(fragmentManager ft)
//如果viewpager在Fragment中fragmentManager
需要是用getChildFragmentManager()
2)getItem()
3)getCount()
 
如需要动态的加载数据刷新UI则实现
mTabNavigation.setOnPageChangeListener(newViewPager.OnPageChangeListener() {
 
            @Override
            public void onPageSelected(intposition) {
//将异步加载的数据再此处刷新到Fragment中
 
            }
//…此处省略
其他两个重载方法
        });
 
三、不显示问题:重写如下方法会导致不显示内容
Public boolean
isViewFromObject(Viewview,Objectobject){

Return view==object ;
}
 
四、关于Fragment嵌套PagerSlidingTapStrip

在遇到不显示数据的情况,一般会认为是
设置pagerslidingTabStrip
的问题,其实不显示数据大多数是因为设置viewPager的不正确而导致的问题,
pagerslidingTabStrip只负责将ViewPagerPager和Tab绑定在一起。实现点击tab滑到对应的viewpager中。
唯一需要注意的的是要在PagerAdapter、FragmentPagerAdapter、FragmentPagerState中重载如下方法:
因为父类的方法中返回的是空,导致tab获取不到字符串,所以要重载该方法。

Public
CharSequencegetPageTitle(intposition){
Return
保存tab字符串的数组:tasString[position];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐