Android Fragment简介_android fragment包括-程序员宅基地

技术标签: android  

  • Fragment概述
  1. 介绍

Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。

使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化管理。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响。

2.特点

·Fragment依赖于Activity,不能独立存在

·一个Activity可以有多个Fragment

·一个Fragment可以被多个Activity重用

·Fragment有自己的生命周期,并能接收输入事件

·可以在Activity运行时动态地添加或删除Fragment

3.优势

模块化:不必把所有代码写在Activity中,而是写在各自的Fragment中。

可重用:多个Activity可以重用一个Fragment。

可适配:根据硬件的屏幕尺寸、屏幕方向,可以实现不同布局,用户体验更好。

  • Fragment生命周期

 

1.周期

 

·onAttach():Fragment和Activity相关联时调用。可获取Activity引用。

·onCreate():Fragment被创建时调用。

·onActivityCreated():当Activity完成onCreate()时调用。

·onStart():当Fragment可见时调用。

·onResume():当Fragment可见且可交互时调用。

·onPause():当Fragment可见但不可交互时调用。

·onStop():当Fragment不可见时调用。

·onDestroyView():当Fragment的UI从视图结构中移除时调用。

·onDestroy():销毁Fragment时调用。

·onDetach():当Fragment和Activity解除关联时调用。

2.Fragment生命周期会经历:运行、暂停、停止、销毁

·运行状态:碎片可见时,关联活动处于运行状态,其也为运行状态。

·暂停状态:活动进入暂停状态,相关联可见碎片就会进入暂停状态。

·停止状态:活动进入停止状态,相关联碎片就会进入停止状态,或者通过FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但如果在事务提交之前调用addToBackStack()方法,碎片也会进入到停止状态。

·销毁状态:当活动被销毁,相关联碎片进入销毁状态。或者调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,碎片也会进入到销毁状态。

3.Fragment的几个核心类

·Fragment:Fragment的基类,任何创建的Fragment都需要继承该类

·FragmentManager:管理和维护Fragment。他是抽象类,具体的实现类是FragmentManagerlmpl。

·FragmentTransaction:对Fragment的添加、删除等操作都需要通过事务方式进行。他是抽象类,具体的实现类是BackStackRecord

4.范例

   一个读新闻的程序,可以用一个fragment显示标题列表,另一个fragment显示选中标题的内容,这两个fragment都在一个activity上,并排显示。那么这两个fragment都有自己的生命周期并响应自己感兴趣的事件。于是,不需要���再像手机上那样用一个activity显示标题列表,用另一个activity显示新闻内容;现在可以把两者放在一个activity上同时显示出来。

如下图:

                 

           

Frament必须被写成可重用的模块。因为fragment有自己的layout,自己进行事件响应,拥有自己的生命周期和行为,所以可以在多个activity中包含同一个Fragment的不同实例。这对于在不同的屏幕尺寸下都能给用户完美的体验尤为重要。比如可以在程序运行于大屏幕中时启动包含很多fragment的activity,而在运行小屏幕时启动一个包含少量fragment的activity。

  读新闻的程序,当检测到程序运行于大屏幕时,启动activityA,将标题列表和新闻内容这两个fragment都放在activityA中;当检测到程序运行于小屏幕时,还是启动activityA,但此时A中只有标题列表fragment,当选中一个标题时,activityA启动activityB,B中含有新闻内容fragment。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43824618/article/details/111317889

智能推荐

Qt入门:3 Qt界面布局管理详解_qt vertical line 移动-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏8次。实例讲解ln_2双击dialog.ui进入设计界面,进行如下设计:程序的主要功能是对中间一个文本框的文字字体样式和颜色进行设置。在界面设计时,对需要访问的组件修改其 objectName,如各个按钮、需要读取输入的编辑框、需要显示结果的标签等,以便在程序里区分。对于不需要程序访问的组件则无需修改其 objectName,如用于界面上组件分组的 Gr..._qt vertical line 移动

CRC冗余校验码及查表法_crc4错误概率-程序员宅基地

文章浏览阅读987次。CRC冗余校验码及查表法什么是CRC编码它将一个长度为k的位串看作是系数是0或者1的k-1次多项式使用一个长度为r+1的生成多项式进行模2计算,生成一个长度为r的字符序列,能检测长度小于等于r的所有突发错误,当突发错误长度为r+1时,只有其刚刚好等于生成多项式,才检测不出来。多项式的最高位、最低位系数必须为1(我不知道为什么)计算方法:(此处使用的减法是模2减法,不进位不借位,相当于XOR运算)例如:使用G(x)=11001检测位串1011011010110110000011001----_crc4错误概率

STM32+ESP8266+DHT11通过MQTT协议连接新版ONENET云平台上传数据_新版onenet连接stm32-程序员宅基地

文章浏览阅读5.7k次,点赞9次,收藏119次。前段时间ONENET云平台进行了升级更新,此前平台的多协议接入(包含旧版MQTT、HTTP、EDP、Modbus、TCP透传等)接口已经隐藏,后续应该会下架,为了能够后续继续使用ONENET云平台,就需要学会使用将数据上传到新版ONENET云平台。经过一段时间的摸索,现在可以成功将数据上传。此次使用MQTT协议将温湿度通过ESP8266_WIFI模块上传到新版ONENET云平台,并使用app.wxbit.com图形化APP制作工具制作APP调用ONENET云平台提供的API接口实时显示温湿度数据。_新版onenet连接stm32

百度网盘直接解析高速下载文件源码_百度网盘解析-程序员宅基地

文章浏览阅读5.6k次。介绍:百度网盘直接高速下载文件源码上传源码 访问域名跳转安装页面填写相关信息 安装完成源码功能:通过curl获取网盘文件信息,处理后显示在网页中。通过api接口以及SVIP账号的Cookie(BDUSS)获取高速下载链接。网盘下载地址:http://kekewl.cc/yk09TgCFisr0图片:..._百度网盘解析

python采集人脸_Python+Dlib+Opencv实现人脸采集并表情判别功能的代码-程序员宅基地

文章浏览阅读525次。一、dlib以及opencv-python库安装介于我使用的是jupyter notebook,所以在安装dlib和opencv-python时是在这个命令行安装的dlib安装方法:1.若可以,直接使用上图所示命令行输入以下命令:pip install cmakepip install boostpip install dlib若安装了visual studio2019应该就可以直接pip ins..._python 采集人脸图像的代码

图表——SM2密钥协商与ECMQV对比-程序员宅基地

文章浏览阅读4.9w次,点赞3次,收藏7次。1. SM2密钥协商流程图2.SM2密钥协商与ECMQV对比1995年,Menezes等人给出MQV方案,该方案与SM2方案仅在少量几个地方有差异:紫色高亮的部分为SM2方案特有。 青色高亮的部分为MQV方案特有。..._ecmqv

随便推点

2020年中南大学研究生招生夏令营机试题_中南大学 计算机 夏令营 笔试-程序员宅基地

文章浏览阅读804次。2020年中南大学研究生招生夏令营机试题题目链接A题题目描述众所周知,彩虹有7种颜色,我们给定七个 字母和颜色 的映射,如下所示:‘A’ -> “red”‘B’ -> “orange”‘C’ -> “yellow”‘D’ -> “green”‘E’ -> “cyan”‘F’ -> “blue”‘G’ -> “purple”但是在某一..._中南大学 计算机 夏令营 笔试

Cmake的option与cmake_dependent_option-程序员宅基地

文章浏览阅读2.9k次。一、介绍cmake提供了一组内置宏,用户可以自己设置。只有当该集合中的其他条件为真时,该宏才会向用户提供一个选项。语法include(CMakeDependentOption)CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON "USE_BAR;NOT USE_ZOT" OFF)如果USE_BAR为true而USE_ZOT为false,则提供一个默认为ON的选项USE_FOO。否则,它将USE_FOO设._cmake_dependent_option

C++ =default-程序员宅基地

文章浏览阅读5.2k次,点赞10次,收藏34次。在c++中如果我们自行定义了一个构造函数,那么编译器就不会再次生成默认构造函数,我们先看如下的代码我们定义一个类,这个类没有定义构造函数,此时在下面一段代码依然可以正常使用,我们加上一个自定义构造函数:此时编译器会报错,原因很简单,我们自定义了一个构造函数,以前的默认构造函数没了,我们要用如下的方式调用:如果我们还要使用无参构造函数得在定义时自己写个好了此时不报错了,但是这样写代码执行效率没有编译器生成的自定义函数的效率高,为了解决这个问题,C++11 标准引入了一个新特性:default 函数。程_c++ =default

linux gcc 4.8.2,gcc4.8.2 编译异常-程序员宅基地

文章浏览阅读446次。gcc4.8.2 编译错误 求助checkingfor--enable-version-specific-runtime-libs...nocheckingfor--enable-generated-files-in-srcdir...nocheckingbuildsystemtype...i686-pc-linux-gnucheckinghostsystemtype....._gcc libatomic error

IOS企业版app部署到自己服务器,不通过AppStore,在iOS设备上直接安装应用程序_plist中内嵌的下载地址 带参-程序员宅基地

文章浏览阅读2.7w次。IOS企业版app部署到服务器上说明 正对ios升级得ios7 以后,plist文件必须放到 https得服务器上了,http不可以用了。 解决方式: 找一个第三方https外链的网盘(推荐:七牛云存储https://portal.qiniu.com/),将plist文件放到网盘上,ipa安装包可以放在 自己的服务器上。不通过在AppStore,在IOS设备上直接安_plist中内嵌的下载地址 带参

2024最新UI千月影视APP源码前后端源码搭建教程_影视源码-程序员宅基地

文章浏览阅读967次。3.修改前端 config 文件内的id=”A6168029539364″ 改为你apicloud显示的。1.全部替换 id.omgk.cn为 你的域名 全部替换 千彩视频 为你的名字。3.设置thinkphp伪静态 跨站日志全部关闭 php版本5.6+2.导入数据库 全部替换id.omgk.cn 为 你的域名。4.后台地址:login/login/mike。1.进数据库文件内修改数据库名称用户名密码等。账号:admin密码:admin。要源码的请自行百度:一生相随博客。_影视源码

推荐文章

热门文章

相关标签