Android Fragment简介

  • 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值