FragmentPagerAdapter默认加载2项,返回时为创建视图
2015-09-23 21:17
656 查看
今天在项目中遇见一个这样的需求:用pagerSlidingTabStrip 作为导航栏, 用viewpager 和FragmentPagerAdapter 装载fragment 可以左右滑动的视图。 首先由个开关,本地记录用户 选择的频道,然后进入选择这个栏目下的ViewPager。
出现的问题: 进入了这个FragmentPagerAdapter 适配器,也是从0项,1项 开始getItem(),加载的,然后读取用户选择的频道,在第几栏,之后直接用ViewPager跳转到指定项:eg:mViewPager.setCurrentItem(position); 但是 如果 在返回到 第0项,第一项。 就不会再次调用getItem()方法了。 然后视图层就显示不出来了。 百度得之 FragmentPagerAdapter
解决方案:转载http://blog.csdn.net/z13759561330/article/details/40737381
出现的问题: 进入了这个FragmentPagerAdapter 适配器,也是从0项,1项 开始getItem(),加载的,然后读取用户选择的频道,在第几栏,之后直接用ViewPager跳转到指定项:eg:mViewPager.setCurrentItem(position); 但是 如果 在返回到 第0项,第一项。 就不会再次调用getItem()方法了。 然后视图层就显示不出来了。 百度得之 FragmentPagerAdapter
解决方案:转载http://blog.csdn.net/z13759561330/article/details/40737381
public Object instantiateItem(ViewGroup container,int position) { //得到缓存的fragment Fragment fragment = (Fragment)super.instantiateItem(container,position); //得到tag ❶ String fragmentTag = fragment.getTag(); if (position == 0 || position == 1) { //如果这个fragment需要更新 FragmentTransaction ft =fm.beginTransaction(); //移除旧的fragment ft.remove(fragment); //换成新的fragment fragment = ProgramFragment.getId(liveAudioVideoList.get(position).id); //添加新fragment时必须用前面获得的tag ❶ ft.add(container.getId(), fragment, fragmentTag); ft.attach(fragment); ft.commit(); //复位更新标志 //fragmentsUpdateFlag[position %fragmentsUpdateFlag.length] =false; } return fragment; }
相关文章推荐
- thinkphp部署bae的相关配置
- php基础语法学习汇总
- 百度OCR文字识别PHP的Demo
- ThinkPHP——RBAC父类控制器权限过滤(权限漏洞修复)
- “新建Laravel项目”并“开启laravel”的操作
- 【2014】【】辛星【php】【秋】【1】php构建开发环境
- YII 授权
- PHP 定时器 边输出边刷新网页
- /usr/local/php-fcgi/sbin/php-fpm start启动服务报错
- Elasticsearch-PHP 配置
- thinkphp 钩子的简单实现和总结
- OLAP与OLTP介绍
- URL::to() 与 URL::toRoute()
- php设计模式----工厂模式
- PHP大小写:函数名和类名不区分,变量名区分
- php实现简易聊天室应用代码
- ThinkPHP学习
- PHP error_reporting() 错误控制函数功能详解
- 利用PHP如何实现Socket服务器
- ubantu下配置ftp服务器