版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录Fragment概述创建FragmentFragment生命周期Fragment管理Fragment之间通讯总结一、Fragment概述
Fragment(碎片)是Android3.0新增的功能,它与Activity非常相似,主要用于在Activity中描述一些行为或一部分用户界面,使程序更加合理和充分利用手机屏幕的空间。Fragment使得Activity的设计模块化,它必须被嵌入到一个Activity中。一个Activity中可以包含多个Fragment,Fragment同时也可被多个Activity使用。一、Fragment概述Fragment的优点如下:能够将Activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。轻松地创建动态灵活的UI设计,适应不同的屏幕尺寸。与Activity绑定在一起,可以在运行中动态地移除、加入、交换等。解决Activity间的切换不流畅问题,轻量切换。二、创建Fragment
创建一个Fragment和创建一个Activity类似,继承Fragment类或Fragment的子类,重写生命周期方法,主要不同之处是需要重写一个onCreateView()方法来返回这个Fragment的布局。其中container是Fragment将会被添加的组,inflate()方法的第二个参数为null,因系统已将生成的布局加入到container中。二、创建Fragment
Fragment不能单独显示在手机屏幕上,要与Activity绑定才能使用,其中向Activity中添加Fragment有以下两种方法:一种是静态加载是直接在布局文件中添加,将Fragment作为布局中的一部分;另一种是动态加载,当Activity运行时,将Fragment放入到Activity中。二、创建Fragment
静态加载示例如下:1<fragment2
android:id="@+id/fragment1"3
android:name="com.hzu.MyFragment"4
android:layout_width="wrap_content"5
android:layout_height=“wrap_content”6/>二、创建Fragment
动态加载示例如下:1FragmentManagerfragmentManager=getFragmentManager();2FragmentTransactiontransaction=fragmentManager.beginTransaction();3transaction.add(R.id.fragment1,newBlankFragment());4mit();fragmentManager.beginTransaction()用于获取事件处理集,然后通过add()方法添加Fragment,再通过commit()提交事务。二、创建Fragment【例8.1】设计一个静态添加Fragment的案例。【说明】在xml中添加Fragment。【开发步骤】(1)创建一个名为Fragment_test的项目,在res/layout的activity_main.xml文件中的内容如右图所示:二、创建Fragment
(2)在res/layout下创建myfragment.xml文件,其内容如下图所示:二、创建Fragment
(3)在src下包为com.hzu.fragment_test的MainActivity.java文件中编写内容如下:二、创建Fragment
(4)在src的com.hzu.fragment_test包下创建MyFragment.java文件,编写内容如下:二、创建Fragment
【运行结果】在Eclipse中启动Android模拟器,接着运行Fragment_test项目,显示效果如图8-1所示。点击图8-1中的Button按钮,会出现如图8-2所示的效果。图8-1运行效果图8-2点击效果三、Fragment生命周期
Fragment必须是依赖于Activity而存在,因此Activity的生命周期会直接影响到Fragment的生命周期。FragmentTransaction提供了很多操作Fragment的方法,如add()、replace()、attach()等,调用这些方法会触发Fragment不同的生命周期。如果程序开发人员使用以上这些方法时不知道Fragment当前处于何种状态是非常可怕的事情,直接影响到Android应用程序的质量与执行效率。三、Fragment生命周期
Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。如右图8-3所示:图8-3生命周期四、Fragment管理FragmentTransaction允许将一系列的Fragment的操作在一次处理事务(Transaction)中完成。每个事务都是一组想要同时执行的方法,例如在一个事物中执行add()、remove()和replace()方法,然后调用commit()方法,把事务的执行结果反映到Activity中。注意,在调用commit()方法之前,为了把事务添加到Fragment事务的回退堆栈中,可能调用addToBackStack()方法。这个回退堆栈被Activity管理,并且允许用户通过按返回键返回到先前的Fragment状态。四、Fragment管理以下是添加、替换、隐藏和移除Fragment的方法:添加:add(intcontainerViewId,Fragmentfragment,Stringtag)替换:replace(intcontainerViewId,Fragmentfragment,Stringtag)隐藏:hide(Fragmentfragment)移除:remove(Fragmentfragment)四、Fragment管理
【例8.4】通过Fragment设置贺州新闻、贺州旅游和旅游咨询三块内容。【说明】点击不同按键时贺州新闻、贺州旅游和旅游咨询三块内容可自由切换。图8-3项目运行效果图8-4切换效果五、Fragment之间通讯
Fragment经常需要在初始化或运行过程中与其他的Fragment进行数据传递。为了提高代码的重用性,降低耦合度,一般在Fragment间不直接进行数据传递,而是使用Activity作为中介来进行数据传递。五、Fragment之间通讯
Fragment经常需要在初始化或运行过程中与其它的Fragment进行数据传递。五、Fragment之间通讯【例8.5】设计程序:分别在初始化Fragment时传值到Fragment中与在程序运行过程中传值到Fragment中的程序。【说明】主要使用setArguments()、getArguments()与自定义的方法进行数据处理。图8-5运行效果图8-6运行传值效果。第一情况:在初始化Fragment时传值,在Activity中使用Fragment的setArguments()方法将需要使用的数据通过绑定到Bundle对象上进行传递过去,而在Fragment中则使用getArguments()方法接收Bundle对象中的数据。如右图8-7所示图8-7。
第二种情况在程序运行过程中传值到Fragment,在Fragment定义一个用于接收数据的方法。在Activity中调用Fragment中已经定义好的方法将数据传递
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年合作担保:合伙人责任分配协议
- 行业洞察与趋势预测能力培养计划
- 2024年三人股权分配协议
- 2024年土地使用权租赁合同模板3篇
- 2024年度跨境电子商务合作合同
- 商务会所厨师劳务聘用协议
- 体育馆应急照明安装合同
- 商业大厦防水施工合同
- 环保监测升降机租赁协议
- 买卖学校车位协议范本
- 人音版音乐七年级上册《辽阔的草原》课件
- 学校大门及围墙工程施工组织设计
- 军队文职考试《公共科目》试题及解答参考(2025年)
- GB/T 44731-2024科技成果评估规范
- 2023-2024学年广东省广州市越秀区九年级(上)期末语文试卷
- 2023年上海交响乐团招聘工作人员考试真题
- 医院药品过期处理与废物管理制度
- 2024-2025学年北师大版数学八年级上册期末综合测试卷
- 2025年中考数学考点分类专题归纳之二次函数
- 2024年宝剑项目可行性研究报告
- 2.2 更好发挥政府的作用 (课件) 2024-2025学年高中政治 必修2 经济与社会
评论
0/150
提交评论