Flagment介绍
背景介绍
Flagment中文名是碎片,意思是Activity中一个行为或用户界面的一部分。你可以在一个单一的Activity中组合使用多个碎片以建立一个多窗格的UI,并且可以在多个活动中重用一个碎片。Flagment是一个拥有独立生命周期、能够独立接受输入事件、并且可以在活动运行时添加或移除的碎片作为一个活动的模块化部分
一个碎片必须总是嵌入到一个活动(activity)中,并且它的生命周期直接受到Activity的生命周期的影响。例如:当活动暂停或销毁时时,它里边的所有碎片也是如此。然而,当一个活动运行时(OnResume)你可以单独的操作每个碎片,例如添加或移除它们。Activity提供了一个类似堆栈的类FlagmentTransaction来管理一个Activity中所有的Flagment,用户添加/删除操作都会加入这个后台堆栈,同时返回按钮可以回退到上一个Flagment。
使用背景
Flagment是在3.0的API中引入的,主要目的的为了在大屏幕的手机上可以更灵活的UI设计。使用Flagment比单纯用View来控制一个页面的显示,会更加灵活,同时自己的堆栈管理机制,也能更有效的管理内存。官网提供的展示图可以直观看到Flagment的使用。
<!--[endif]-->
使用Flagment.
<!--[if !supportLists]-->1. <!--[endif]-->Flagments的生命周期。首先要像Activity一样先了解Flagments的生命周期,如下图所示:
<!--[endif]-->
<!--[if !supportLists]-->2. <!--[endif]-->添加Flagment到Activity中。 有两种方法:
<!--[if !supportLists]-->A. <!--[endif]-->继承Flagment,在Layout中声明
(代码来自官网:http://developer.android.com/guide/components/fragments.html)
<!--[endif]-->
<!--[endif]-->
B.使用代码在Activity中添加。
ExampleFragment fragment =newExampleFragment(); fragmentTransaction.add(R.id.fragment_container,fragme; fragmentTransaction.commit();
写法有点像数据库的事务管理。
<!--[if !supportLists]-->3. <!--[endif]-->Flagments的管理:
Android提供了一个FlagmentManager类来管理,提供了以下方法:
findFragmentById()获取你Activity存在的Fragment
popBackStack()把Fragment从返回栈中弹出
addOnBackStackChangedListener返回栈的变化注册监听器.
……..还有其他的可以查看官网文档。
<!--[if !supportLists]-->4. <!--[endif]-->执行Flagment的事务(FragmentTransaction):
进行对Fragment的添加,移除,替换等等其他操作。Flagments提交给Activity的每个变化称为一个事务。你可以使用像add(),remove(),replace()这样的方法来为一个事务设定你想要执行的操作.,最好别玩了执行commit()方法。
//创建一个新的Fragmen和事务
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
//使用这个Fragment替换在Fragmen容器中的Fragmet
transaction.replace(R.id.fragment_container, newFragment);
//添加这个事务到返回栈
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
addToBackStack():如果没有调用addToBackStack()方法,那么这个fragment将会在事务提交后被摧毁,了调用addToBackStack()方法,那这个fragment会被停止并加入堆栈,并可以在用户按返回的时候恢复。
<!--[if !supportLists]-->5. <!--[endif]-->Flagment 与Activity交互
<!--[if !supportLists]-->A. <!--[endif]-->getActivity(),Flagments中调用Activity
B.findFragmentById()/findFragmentByTag() 通过FragmentManager Activity可以获取一个对这个Fragment的引用。
6. Flagment 与Flagment之间的交互。
通常做法是:在FragmentA中定义一个回调接口然后让Activity实现它.当Activity通过接口接收到调用时,把数据/操作共享与Flagment B。
总结:Flagment 估计会是以后Android开发中非常经常用到的,而且随着Android 4.0的机器越来越多,使用Flagment 来开发的也会越来越多,尽早掌握和使用,是对每个开发人员的要求。
本文参考了:
http://developer.android.com/guide/components/fragments.html.
相关推荐
【标题】:MediaPlayer是Android系统中的一个核心组件,用于播放各种多媒体文件,如音频和视频。这个组件在Android应用开发中扮演着至关重要的角色,它提供了丰富的功能来控制媒体的播放,包括播放、暂停、停止、快...
花了一段时间写的网易新闻,Tabhost搭起的架子,每个activity对应多个flagment的构建。 1:顶部导航栏,点击顶部导航栏的选项,会改变对应的flagment,左右滑动 flagment顶部导航栏跟着变化 2.解决viewpager的嵌套,...
花了一段时间写的网易新闻,Tabhost搭起的架子,每个activity对应多个flagment的构建。 1:顶部导航栏,点击顶部导航栏的选项,会改变对应的flagment,左右滑动 flagment顶部导航栏跟着变化 2.解决viewpager的嵌套,...
Fragment是Android应用开发中的一个重要组件,它允许开发者在单个Activity中构建复杂的界面,从而实现更灵活的布局设计。在Android 3.0(API级别11)之后引入的Fragment,特别适合平板电脑等大屏幕设备,但也适用于...
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
铅酸电池失效仿真comsol
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
springboot124中药实验管理系统设计与实现,含有完整的源码和报告文档
解除劳动合同协议书
快速过滤图像融合Matlab代码.rar
强调图像中内核形状(例如直线)的过滤器Matlab代码.rar
在内网linux服务器安装redis 在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
微信小程序StartKitw_xapp-startkit
座位选择微信小程序版本
机械臂代码_Mechanical_arm
图像分割测试视频river-light.mp4
前端分析-2023071100789
labview源码参考示例,可供参考学习使用