1、Fragment的产生与介绍  
   Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

2、Fragment的生命周期

  Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。

      

可以看到Fragment比Activity多了几个额外的生命周期回调方法:

  • onAttach(Activity)                                                        当Fragment与Activity发生关联时调用
  • onCreateView(LayoutInflater, ViewGroup,Bundle)               创建该Fragment的视图
  • onActivityCreated(Bundle)                                                          当Activity的onCreate方法返回时调用
  • onDestoryView()                                                                           与onCreateView想对应,当该Fragment的视图被移除时调用
  • onDetach()                                                                                    与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,

3、静态的使用Fragment

  • 继承Fragment,重写onCreateView决定Fragemnt的布局
  • 在Activity中声明此Fragment,就当和普通的View一样

4、动态的使用Fragment

  使用FragmentManager对Fragment进行了动态的加载

5、Fragment家族常用的API

  Fragment常用的三个类:

  • android.app.Fragment 主要用于定义Fragment
  • android.app.FragmentManager 主要用于在Activity中操作Fragment
  • android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~

  a、获取FragmentManage的方式:

    getFragmentManager() // v4中,getSupportFragmentManager (使用Android3.0以下的版本,需要引入v4的包)

  b、主要的操作都是FragmentTransaction的方法

    FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务

  • transaction.add()           往Activity中添加一个Fragment
  • transaction.remove()     从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁。
  • transaction.replace()     使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~
  • transaction.hide()          隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
  • transaction.show()        显示之前隐藏的Fragment
  • detach()                        会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
  • attach()                         重建view视图,附加到UI上并显示。
  • transatcion.commit()    提交一个事务

   注:commit方法一定要在Activity.onSaveInstance()之前调用。否则会Activity状态不一致:State loss错误。

谢谢大家的关注,实例会在后面更新出来,但理论和实践一样重要。      Youth is like smoking. Smoke in the dust. Ash fall.

        

转载于:https://www.cnblogs.com/hxb2016/p/6169824.html

Android Fragment (一)相关推荐

  1. Android Fragment 基本介绍

    Android Fragment 基本介绍 Android Fragment 基本介绍 Fragment Android是在Android 3.0 (API level 11)开始引入Fragment ...

  2. android Fragment 学习资料推荐

    为什么80%的码农都做不了架构师?>>>    android   Fragment 学习资料推荐:android大神 郭霖 http://blog.csdn.net/guolin_ ...

  3. 【转】基于Android Fragment功能的例子

    原文网址:http://blog.csdn.net/eyu8874521/article/details/8252216 通过最近空闲时候对Fragment的学习,尝试着写了一个小Demo,将在开发的 ...

  4. [转]Android fragment 重叠问题——通过hide,show方式导致的解决方法

    [转]Android fragment 重叠问题--通过hide,show方式导致的解决方法 参考文章: (1)[转]Android fragment 重叠问题--通过hide,show方式导致的解决 ...

  5. 【转】 Android Fragment 真正的完全解析(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...

  6. Android Fragment 真正的完全解析(下)

    本篇将介绍上篇博客提到的:如何管理Fragment回退栈,Fragment如何与Activity交互,Fragment与Activity交互的最佳实践,没有视图的Fragment的用处,使用Fragm ...

  7. Android Fragment嵌套导致的bug

    原文链接 Android 多个Fragment嵌套导致的三大BUG Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误 http ...

  8. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

    Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...

  9. Android Fragment 简单实例

    Android上的界面展示都是通过Activity实现的.Activity实在是太经常使用了.我相信大家都已经很熟悉了,这里就不再赘述. 可是Activity也有它的局限性,相同的界面在手机上显示可能 ...

  10. android 底部通知,Android Fragment实现底部通知栏

    Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...

最新文章

  1. 记录CSS3 target伪类简介
  2. Linux系统上传文件与下载文件命令
  3. P值(P-value),“差异具有显著性”和“具有显著差异”
  4. iphone 使用ZBar 条码扫描
  5. java面试题4 牛客:运行下列代码,运行结果为
  6. 计算机字体原理,字体图标生成原理(1)
  7. Qt工作笔记-主界面往模式对话框emit信号,有注意的问题
  8. 20190825:(leetcode习题)最长公共前缀
  9. 190330每日一句
  10. C# JPG转PDF
  11. 腾讯云支付系统架构介绍
  12. coldfusion_ColdFusion MX 7功能之旅
  13. [转]页面回传与js调用服务器端事件
  14. SAN计算机,什么是SAN网络存储
  15. Python安装火狐浏览器驱动
  16. 数字图像处理——第二章 数字图像基础
  17. citrix VPX 中申请证书的重点
  18. 3.文件系统组成和基本操作
  19. CSDN下载积分获取途径
  20. 使用Protege进行本体构建(实践)

热门文章

  1. virtual box
  2. cuda Device Management
  3. Python socket TCP
  4. WSGI Application/Framework
  5. Oracle的order by关键字
  6. 问题 | golang开发之go.mod的使用方法
  7. 创建 demo.html,demo.html
  8. 分享一下把pdftk的合并pdf功能添加到TC(Totalcommander)
  9. Docker学习总结(50)——Docker 微服务优雅关闭
  10. 二次优化问题dfp_MATLAB优化问题应用实例讲解