android--fragment详解

       Fragment(碎片)是作为android3.0(api level 11)发布版本的一部分而引入的;Fragment允许将activity拆分成多个完全独立封装的可重用的组件,每个组件有它自己的生命周期和ui布局。

       Fragment包含了一系列和acitivity类相像的事件处理程序。当Fragment被创建,启动,恢复,暂停,停止和销毁时,这些事件处理程序就会被触发。Fragment还包含了一些额外的callback,用来标识,Fragment和它的父acitivity之间的绑定和解绑定关系,Fragment的view层次的创建(和销毁)情况,以及它的父activity的创建过程完成情况。如下图所示:

程序清单中展示一个Fragment生命周期中可用的基本方法,在每个基本方法的注释中描述了对于每个状态变化的事件,你应该考虑要做的动作

package com.example.todolist;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MyFragment extends Fragment{


	//调用该方法时Fragment会被连接到它的父activity上
	@Override
	public void onAttach(Activity activity) {
		// TODO Auto-generated method stub
		super.onAttach(activity);
		//获取对父activity的引用
	}

	//调用该方法来进行fragment的初始创建
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//初始化fragment
	}

	//一旦fragment已被创建,要创建它自己的用户界面时调用该方法
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		//创建,或者填充fragment的ui,并返回它
		//如果这个fragment没有ui,那么返回null
		return super.onCreateView(inflater, container, savedInstanceState);
	}


	//一旦父activity和fragment的ui已被创建,则调用该方法
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		//完成fragment的初始化--尤其是那些父activity被初始化完成后或者fragment的view被完全填充后才能做的事情
	}
	//在可见生命周期的开始时被调用
	@Override
	public void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		//应用所有需要的ui变化,现在fragment是可见的
	}
	
	//在活动生命周期的开始时被调用
	@Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		//恢复所有暂停的fragment需要的ui更新,线程或进程,但在非活动状态它是暂停的
	}
	//在活动生命周期结束时调用
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		//当activity不是活动的前台activity时,需要暂停ui的更新,挂起线程或者暂停那些不需要更新的cpu的集中处理。
		//档调用这个方法后,进程可能被终止,所以要保持所有的编辑和状态改变信息
	}
	
	//在活动生命周期结束时,调用该方法保持ui的状态变化
	@Override
	public void onSaveInstanceState(Bundle outState) {
		// TODO Auto-generated method stub
		super.onSaveInstanceState(outState);
		//将ui的状态改变信息保存到outstate中
		//这个bundle会被传递到oncreate,oncreateview和onactivitycreate(如果它的父activity被终止并重新启动)方法中
	}
	//在可见生命周期结束时调用该方法
	@Override
	public void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		//当fragment不可见时,暂停其余的ui更新,挂起线程或者暂停不再需要的处理
	}
	//	当fragment的view被分离时,调用该方法
	@Override
	public void onDestroyView() {
		// TODO Auto-generated method stub
		//清除资源相关的view
		super.onDestroyView();
	}
	
	//在整个生命周期结束时调用该方法
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		//清除所有的资源,包括结束线程和关闭数据库连接等
		super.onDestroy();
	}
	//当fragment从它的父activity上分离时,当用该方法
	@Override
	public void onDetach() {
		// TODO Auto-generated method stub
		super.onDetach();
	}

}
demo应用切图:

界面中信息分为两部分fragment组成,左边部分为EditText部分,供用户输入;右边部分为ListFragment显示用户输入的信息及输入时间。同时,自定义了ListItem,修改了Adapter和TextView。

源代码,点击下载

android--fragment详解,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。