当前位置: 首页 > news >正文

viewPager + fragment

有两种实现方式,一种是 fragmentActivity + FragmentPagerAdapter (Fragment,FragmentManager需要导包:android.support.v4.app.)

另一种是 Activity + PagerAdapter(Fragment,FragmentManager需要导包:android.app.)

1. fragmentActivity + FragmentPagerAdapter

自定义FragmentPagerAdapter只需要重写: getItem(),getCount() 方法

2. Activity + PagerAdapter

自定义的 PagerAdapter 需要重写以下方法:

instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)  //记得删除 super.destroyItem(container, position, object);否则报异常:UnsupportedOperationException,原因查看源码
getCount()
isViewFromObject(View, Object)

 需要添加 Title 时还需要重写 getPageTitle() 方法

重写 :instantiateItem(ViewGroup, int)

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Fragment fragment = mList.get(position);
            if (!fragment.isAdded()) {
                FragmentTransaction saction = mFragManager.beginTransaction();
                saction.add(fragment, fragment.getClass().getSimpleName());
                //只有commit才会执行
                saction.commit();
                //executePendingTransactions--立即执行 
                mFragManager.executePendingTransactions();
            }
            View view = fragment.getView();
            container.addView(view);
            return view;
        }

 重写 :isViewFromObject(View, Object)

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

 

注意:自定义Fragemt 时,必须重写 onCreateView() 方法

使用FragmentTransaction,移除fragment时需要addtobackstack()否则无法回退(fragement 在移除时被销毁)

 

转载于:https://www.cnblogs.com/zhy7104/p/6039731.html

相关文章:

  • 从内核文件系统看文件读写过程【转】
  • Jupiter的安装和使用
  • 【趣解编程】条件语句if
  • [OC]UILabel 文字长的截断方式
  • SqlServer基础系列——row_number() rank() dense_rank()SqlServer系列笔记
  • 项目管理文件夹模板
  • 网站开发之DIV+CSS简单布局网站入门篇(五)
  • Nodejs基础:路径处理模块path总结
  • gcc选项-g与-rdynamic的异同_转
  • 思维改变生活:亲身经历了就一定能明白吗?
  • Python2除法
  • Android学习之ViewPager(一)——ViewPager的简单使用
  • 微信聊天和朋友圈可以拍摄和分享大视频?
  • Atitit js中的依赖注入di ioc的实现
  • 为视图添加丝滑的水波纹
  • angular2开源库收集
  • Angular4 模板式表单用法以及验证
  • github指令
  • golang 发送GET和POST示例
  • IndexedDB
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript 奇技淫巧
  • leetcode388. Longest Absolute File Path
  • Lucene解析 - 基本概念
  • PHP那些事儿
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • v-if和v-for连用出现的问题
  • vue-router 实现分析
  • Vue官网教程学习过程中值得记录的一些事情
  • webgl (原生)基础入门指南【一】
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 免费小说阅读小程序
  • Python 之网络式编程
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​渐进式Web应用PWA的未来
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (4) PIVOT 和 UPIVOT 的使用
  • (javascript)再说document.body.scrollTop的使用问题
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (七)理解angular中的module和injector,即依赖注入
  • (十一)c52学习之旅-动态数码管
  • (原創) 未来三学期想要修的课 (日記)
  • .Net MVC + EF搭建学生管理系统
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET开发者必备的11款免费工具
  • .net生成的类,跨工程调用显示注释
  • ::
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [C#C++]类CLASS
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用