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,特别适合平板电脑等大屏幕设备,但也适用于...
数学建模拟合与插值.ppt
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
mysql相关资源.txt
此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。
Python爬虫爬取漫画
模拟退火算法应用。C++语言编程用模拟退火算法解决旅行商问题。该资源包含模拟退火算法C++语言的源代码。模拟退火算法是一种基于概率的全局优化算法,最初来自于物理学中的退火过程。它通过模拟金属冷却时原子排列逐渐趋于最低能量状态的过程来寻找问题的最优解。模拟退火算法常用于解决非线性、组合优化问题,特别适合于大规模、复杂的搜索空间。
传感器试题及答案.doc
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
本文档主要讲述的是MongoDB数据表基本操作;希望对大家会有帮助;感兴趣的朋友可以过来看看
本数据集提供了2011至2021年间全国各省废气和废水中主要污染物的排放量统计数据。数据涵盖了二氧化硫、氮氧化物、烟尘和颗粒物等关键污染物的排放量,为研究中国环境状况和污染物排放趋势提供了宝贵信息。数据显示,2011-2021年间,各省的二氧化硫排放量从数十万吨到数百万吨不等,其中广东、广西、海南等省份的排放量较高。氮氧化物排放量同样显示出地域差异,北京、天津等北方城市的排放量相对较低,而一些工业大省如河北、山西的排放量较高。颗粒物排放量统计显示,工业源和生活源是主要的排放源,其中工业源排放量占比较大。这些数据不仅对环保政策制定者具有参考价值,也为学术研究提供了实证基础。
脉冲宽度测量单片机课程设计.doc
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
全国矢量地图数据【国道+高速公路】ArcGIS Shape格式数据集是一种专门用于地理信息系统(GIS)的矢量数据集,包含中国范围内国道和高速公路的详细路网信息。该数据集广泛应用于交通规划、导航、物流分析和灾害应急等领域,具有高精度和易用性。 数据集特点: 1. 数据内容: 国道:包括以“G”开头的国家级公路,如G1京哈高速、G107国道等。 高速公路:包括全国范围内的所有高速公路网,覆盖主要经济区、城市和边境口岸。 属性数据: 道路编号(国道或高速公路编号)。 道路名称。 道路等级(如一级、二级、快速路等)。 起点和终点坐标。 道路长度(单位:公里)。 相关属性(如路段建成年份、设计速度、车道数等)。 2. 数据格式: **Shapefile(.shp)**格式,支持主流GIS软件(如ArcGIS、QGIS)及数据处理工具(如Python、Matlab)。 3. 投影坐标系: 一般采用WGS84地理坐标系,或可根据需求转换为**GCJ-02(火星坐标系)**以配合国内导航应用。
4