Fragment介绍

Fragment允许将Activity拆分成多个完全独立封装的可重用的组件,每个组件有它自己的生命周期和UI布局。

Fragment最大的优点就是你可以为不同屏幕大小的设备创建灵活动态的UI.

每个Fragment都是独立的模块,并与它所绑定的Activity紧密联系在一起的。多个Activity可以共用一个Fragment. Fragment为大量的不同型号、尺寸、分辨率的设备提供了一种统一的 UI优化方案。

可以通过继承Fragment类来创建一个新的Fragment.在大多数情况下,需要为Fragment分配一个UI,也可以为Activity创建一个没有任何UI但提供后台行为的Fragment.

和Activity不同,Fragment不需要在mainfest.xml文件中注册,这是因为Fragment只有嵌入到一个activity时,它才能够存在,它的生命周期也依赖于它所依赖的activity.

可以通过一个程序来观察其生命周期:

package com.example.myfragment;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends Fragment {

	//调用该方法时Fragment会被连接到它的父Activity上
	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		//获取对父Activity的引用
		Log.e("tag", "onAttach");
	}

	//调用该方法进行Fragment的初始创建
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//初始化Fragment
		Log.e("tag", "onCreate");
	}

	//一旦Fragment已被创建,要创建它自己的用户界面时调用的方法
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		//创建、或者填充Fragment的UI,并返回它
		//如果这个Fragment没有UI,那么返回null
		Log.e("tag", "onCreateView");
		return super.onCreateView(inflater, container, savedInstanceState);
	}

	//一旦父Activity和Fragment的UI已被创建,则调用该方法
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		//完成Fragment的初始化,尤其是那些父Activity被初始化完成后或者Fragment的view被完全填充后才能做到事情
		Log.e("tag", "onActivityCreated");
	}

	//在可见生命周期的开始时被调用
	@Override
	public void onStart() {
		super.onStart();
		//应用所有的UI变化
		Log.e("tag", "onStart");
	}

	//在活动生命周期的开始时被调用
	@Override
	public void onResume() {
		super.onResume();
		//恢复所有暂停的Fragment需要的UI更新,线程或者进程,但在非活动状态时它是暂停的。
		Log.e("tag", "onResume");
	}

	//在活动周期结束时被调用
	@Override
	public void onPause() {
		//当Activity不是活动的前台Activity时,需要暂停UI的更新、挂起或者暂停那些不需要更新的CPU的集中处理。由于调用这个方法后,进程可能被终止,所有要保存所有的编辑和状态改变信息。
		super.onPause();
		Log.e("tag", "onPause");
	}

	//在活动生命周期结束时,调用该方法保存UI的状态
	@Override
	public void onSaveInstanceState(Bundle outState) {
		//这个outState会被传递到onCreate、onCreateView和onActivityCreate(如果它的父Activity被终止并且重新启动)方法中
		super.onSaveInstanceState(outState);
		Log.e("tag", "onSaveInstanceState");
	}

	//在可见生命周期结束时调用该方法
	@Override
	public void onStop() {
		//当Frament不可见时,暂停其余的UI更新、挂起线程或者暂停不再需要的处理
		super.onStop();
		Log.e("tag", "onStop");
	}

	//当Fragment的view被分离时,调用该方法
	@Override
	public void onDestroyView() {
		//清除相关资源的view
		super.onDestroyView();
		Log.e("tag", "onDestroyView");
	}

	//在整个生命周期结束时调用该方法
	@Override
	public void onDestroy() {
		//清除所有的资源,包括结束线程和关闭数据库连接等
		super.onDestroy();
		Log.e("tag", "onDestroy");
	}

	//当Fragment从它的父Activity上分离时,调用该方法
	@Override
	public void onDetach() {
		super.onDetach();
		Log.e("tag", "onDetach");
	}

}

Fragment完整的生命周期开始于绑定到它的父Acitvity,结束于父Activity上分离。通过分别调用onAttach和onDetach来表示这些事件。

onAttach事件在Fragment的UI创建之前,以及Fragment自身或它的父Activity完成它们的初始化之前会被触发。通常情况下,onAttach事件用来获取一个Fragment的父Activity的引用,为进一步的初始化工作做准备。

Fragment介绍

时间: 2024-08-29 13:02:23

Fragment介绍的相关文章

【Android UI设计与开发】4.底部菜单栏(一)Fragment介绍和简单实现

TabActivity在Android4.0以后已经被完全弃用,取而代之的是Fragment.Fragment是Android3.0新增的概念,Fragment翻译成中文是碎片的意思,不过却和Activity十分的相似.以下内容适用于3.0及以上的版本,3.0以下就不再赘述. 官方文档地址:http://developer.android.com/reference/android/support/v4/app/Fragment.html 一.Fragment的基础知识介绍 1.Fragment

Android——Fragment介绍及两种基本使用方法

今天在调ViewPager的时候,感觉ViewPager+Fragment这种做法更灵活,所以,现在拿出来Fragment再整理下. 一,为什么要用Fragment 1,灵活布局 Fragment表现Activity中用UI的一个行为或者一部分.可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment.把fragment想象成一个activity的模块化区域,有它自己的生命周期,接收属于它的输入事件,并且可以

安卓之碎片Fragment介绍

Android是在Android 3.0 (API level 11)开始引入Fragment的. Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完

Fragment介绍(一)

1 概述 Fragment是在Android 3.0开始引入fragment的,简单理解可以把它当成 activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或移除fragment模块 2 适用场景 当开发的应用程序同时适用于平板电脑和手机时,可利用fragment实现灵活的布局,改善用户体验 3 生命周期 因为fragment必须嵌入在activity中使用,所以fragment的生命周期和它所在的activiy是密切相关的 F

【Android基础】Fragment 详解之Fragment介绍

Fragment在Android 3.0( API 11)引入,是为了支持在大屏上显示更加动态.灵活的UI,比如在平板和电视上.Fragment可以看作是嵌套的Activity,类似ActivityGroup,但是开销肯定没有ActivityGroup那么大,每一个Fragment管理着一个View,Fragment彼此之间相互独立,有自己的生命周期,这个生命周期是在Activity生命周期中的.Fragment可以用来解决屏幕适配和动态创建View的问题. 一个Fragment总是嵌入到一个A

首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment

前言 Android开发中使用底部菜单栏的频次非常高,主要的实现手段有以下: - TabWidget - 隐藏TabWidget,使用RadioGroup和RadioButton - FragmentTabHost - 5.0以后的TabLayout - 最近推出的 Bottom navigation 今天带大家来探索下如何用Fragment+FragmentTabHost++ViewPager 实现底部菜单栏 目录 总体设计思路 Fragment:存放不同选项的页面内容 FragmentTab

【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏

既然 Fragment 取代了TabActivity,当然 TabActivity 的能实现的菜单栏,Fragment 当然也能实现.主要其实就是通过菜单栏的点击事件切换 Fragment 的显示和隐藏. 来看看栗子吧: 1.效果图来了: 2.代码具体实现 (1)对应的 Fragment 编辑代码和布局实现在前面的Fragment介绍和简单实现  中已经有提及,代码中没复杂的地方,此处略过,具体可看实例代码. (2)菜单栏实现,这里使用代码实现的,其实也可以用布局文件实现,代码如下: packa

Android -- 使用Fragment

Fragment类似与Activity,可以使用它进行多个页面间的切换(A页面跳转到B页面),之前我们了解过,通过Activity也可以实现这样的操作(http://blog.csdn.net/gaopeng0071/article/details/45043967).那为什么会出现Fragment呢,下面我们来看看 Fragment介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布

安卓笔记:Fragment

1.Fragment 介绍:http://www.cnblogs.com/mengdd/archive/2013/01/08/2851368.html Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块. 可以把Fragment设计成可以在多个Activity中复用的模块