Fragment碎片:作为Activity的一部分,不能单独使用;

1. Fragment特点:

(1)一个Fragment可以在多个Activity中重用;

(2)一个Activity内部可以嵌入多个Fragment;

2. Fragment生命周期:

1)启动app:

Activity:onCreate()àonStart()àonResume();

Fragment:

onAttach()àonCreate()àonCreateView()àonActivityCreated()àonStart()àonResume();

2)运行状态到暂停状态:

Activity:onPause()àonStop();

Fragment:onPause()àonStop();

3)暂停状态到运行状态:

Activity:onRestart()àonStart()àonResume();

Fragment:onStart()              àonResume();

4)运行状态到销毁状态:

Activity:  onPause()àonStop()àonDestroy();

Fragment:onPause()àonStop()àonDestroyView()àonDestroy()àonDetach();

(1)onAttach():关联Fragment和Activity;可以在此方法中获取当前Fragment所在的Activity;

(2)onCreate():Fragment创建时调用此方法;可以初始化View的控件;

(3)onCreateView():绘制Fragment的UI界面时调用此方法;必须返回一个View对象,如果返回为null,则该Fragment不会显示内容;

(4)onActivityCreated():当前Fragment所在Activity的onCreate()执行完成后回调此方法;

(5)onStart():能看到部分界面但是不能交互;

(6)onResume():运行状态,可以交互;

(7)onPause():暂停状态,不能交互;

(8)onStop():停止状态:看不到UI界面;

(9)onDestroyView():Fragment从Activity中移除View时回调此方法;

(10)onDestroy():Fragment被销毁时回调的方法;

(11)onDetach():Fragment和所在的Activity失去关联回调此方法;

3. 创建Fragment:

(1)创建Fragment的xml布局文件;

(2)创建Fragment子类,继承Fragment类或者Fragment子类;

(3)重写回调方法onCreate(), onCreateView(), onPause()等方法;

1)onCreate():创建Fragment时回调此方法,可以初始化View以外的控件;

2)onCreateView():绘制Fragment的UI界面时回调此方法,必须返回一个View视图对象,作为当前Fragment的显示视图;

该方法传入布局加载器,用该布局加载器调用inflate()加载fragment的布局文件,传入三个参数:参数1:要加载的Fragment布局文件;参数2:该Fragment所在的容器;参数3:布尔值;之后返回布局加载器加载的视图;

注意:(1)如果参数2设置为null,则会直接返回创建的视图;

(2)(推荐)如果参数2设置为传入的container容器,参数3为false,则会从容器中得到LayoutParams,对要加载的视图设置LayoutParams;

(3)如果参数2设置为传入的container容器,参数3为true,则将要加载的子视图放在container容器中;

4. 将Fragment嵌入到Activity中:

(1)第一种方式:静态标签添加:

使用fragment标签,必须添加属性id指定当前fragment的id和属性name指定包名;

(2)第二种方式(常用):代码动态嵌入:

1)获取碎片管理器,上下文调用getFragmentManager()获得FragmentManager对象;

2)开启事务,FragmentManager对象调用beginTransaction()获得FragmentTransaction对象;

3)动态将Fragment嵌入到Activity中,包括add()添加,replace()替换,remove()移除等;

添加和替换时需要传入两个参数:参数1:将Fragment放入的容器中;

参数2:要放进容器中的Fragment对象;

4)提交事务,FragmentTransaction对象调用commit()提交;

注意:事务一定进行提交之后,才会运行;

Fragment分解使用的更多相关文章

  1. Apache Drill 调研学习

    Apache Drill 调研学习 ## 一.Drill概述 在大数据时代,对于Hadoop中的信息,越来越多的用户需要能够获得快速且互动的分析方法.大数据面临的一个很大的问题是大多数分析查询都很缓慢 ...

  2. 札记:Fragment基础

    Fragment概述 在Fragment出现之前,Activity是app中界面的基本组成单位,值得一提的是,作为四大组件之一,它是需要"注册"的.组件的特性使得一个Activit ...

  3. Unity中Mesh分解与边缘高亮加上深度检测

    一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMe ...

  4. Fragment学习笔记

    Fragment为大量型号,尺寸,分辨率的设备提供了一种统一的UI优化方案.将Activity分解为多个Fragment,将极大地提高UI的灵活性,也更容易为一些新的设备配置带来更好的用户体验. on ...

  5. Android Fragment 详解(未完...)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. 之前写过一篇关于 Fragment 生命周期的文章 ...

  6. Android Fragment 替代方案

    refs: Square 开源库Flow和Mortar的介绍https://github.com/hehonghui/android-tech-frontier/tree/master/android ...

  7. 深入一点 让细节帮你和Fragment更熟络

    有一段时间没有写博客了.作为2017年的第一篇,初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题: "假设,想要对一个Fragment每次在隐藏/显示之间做状态切换时进行 ...

  8. url各部分组成分解

    url各部分组成分解介绍:关于url可能大家都不陌生,第一印象就是网址.但是深究起来,不少朋友并明白里面的一些细节,下面就来进行一下分解.scheme://host:port/path?query#f ...

  9. Android: Fragment编程指南

    本文来自于www.lanttor.org Fragment代表了Activity里的一个行为,或者Activity UI的一部分.你可以在一个activity里构造多个Fragment,也可以在多个a ...

随机推荐

  1. (转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe

    原文:http://watchmen.xin/2018/07/13/IT%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E7%9F%A5%E8%AF%86%E4%BD%93% ...

  2. mysql 开发进阶篇系列 38 mysql日志之错误日志log-error

    一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有er ...

  3. Java 中三大构建工具:Ant、Maven和Gradle

    Java世界中主要有三大构建工具:Ant.Maven和Gradle 目前:Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是依赖管理系统 ...

  4. ajaxFileUpload带参数提交(亲测可用)

    使用ajaxFileUpload上传文件时,有时需要带参数提交,网上有很多资料说使用data,但其实要使用data带参数是需要修改的,否则后台是获取不到的. 分析原因: ajaxFileUpload为 ...

  5. iframe可通过postMessage解决跨域、跨窗口消息传递

    https://www.cnblogs.com/dorothyorsusie/p/6178599.html //iframe传参给父级页面 function give_info(){ console. ...

  6. js中的模块化

    前阵子一直忙着找实习,发现已经有一段时间没写博客了,面试很多时候会被问到模块化,今天就让我们一起来总结下把 一.什么是模块化 在js出现的时候,js一般只是用来实现一些简单的交互,后来js开始得到重视 ...

  7. 阿里云 Ubuntu16.04 apache2 ssl证书下载与安装(必须有域名)

    阿里云申请免费SSL证书并下载(包含xxx.key|xxx._root_bundle.crt|xxx._public.crt三个文件) 用https是自己的网站收到保护,不易被攻克,所以保护自己的网站 ...

  8. 从零搭建生产环境的ghost2.0博客

    当前安装过程是在ghost cli 1.9.2上的,由于ghost更新特别快,我安装我个人博客cmlanche.com的时候还是1.9.1,当时没碰到啥问题,到1.9.2就有一点点不一样了,所以要注意 ...

  9. DotNetCore学习-3.管道中间件

    中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行一些操作. 请求委托被用来建立请求管道,并处理每一个HTT ...

  10. Http 概述

    Http是可靠的数据传输协议.   资源 Web服务器是Web资源(resource)的宿主.包括静态文件以及动态的内容.   媒体类型 Http对每种需要由web传输的对象都打上了名为MIME类型的 ...