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应用切图:

参考:http://www.2cto.com/kf/201403/288477.html

时间: 2024-08-28 12:10:04

android--fragment详解的相关文章

android——fragment详解

在android开发过程中,如果使用到了导航栏.那么不可避免的就需要使用fragment来处理界面.闲着没事,就详解一下Framgent的使用方法吧. 难得写一次.本人 shoneworn shonewron shoneworn 重要事情说三遍. 1.Fragment 的生命周期 场景演示 : 切换到该Fragment11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 14:26:35.095: D/AppListFragment

Android Fragment详解(一):概述

Fragment是activity的界面中的一部分或一种行为.你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment.你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除. Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响.例如:当activity暂停时

Android Fragment详解(二):Fragment创建及其生命周期

Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To create a fragment, you must create a subclass of Fragment (or an existing subclass of it). The Fragment class has code that looks a lot like an Activit

Android Fragment详解(三): 实现Fragment的界面

为fragment添加用户界面: Fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中. 一个 要为fragment提供layout,你必须实现onCreateView()回调方法,然后在这个方法中返回一个View对象,这个对象是fragment的layout的根.     注:如果你的fragment是从ListFragment中派生的,就不需要实现onCreateView()方法了,因为默认的实现已经为你返回了ListVie

Android Fragment详解(六):Fragement示例

把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完成. 你从fragment添加到菜单的任何条目,都会出现在现有菜单项之后.Fragment之后可以通过方法onOptionsItemSelected()来响应自己的菜单项被选择的事件. 你也可以在fragemnt中注册一个view来提供快捷菜单(上下文菜单).当用户要打开快捷菜单时

Android Fragment详解(五):Fragment与Activity通讯

与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例. Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById()).例如: ViewlistView =getActivity().findViewById(R.id.list);同样的,activity也可以通过

Android Fragment详解(四):管理Fragment

要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager(). 你可以用FragmentManager来做以上事情: 1使用方法findFragmentById()或findFragmentByTag(),获取activity中已存在的fragment们. 2使用方法popBackStack()从activity的后退栈中弹出fragment们(这可以模拟后退键引发的动作). 3用方法addOnBackStack

Android Fragment——详解

http://passport.baidu.com/?business&un=%E5%B0%8F%E5%A7%90%E6%89%BE%E4%BF%A1%E6%81%AF%E6%B1%A4%E9%98%B4#0 http://passport.baidu.com/?business&un=%E5%B0%8F%E5%A7%90%5F%E5%A4%AA%E5%8E%9F%5F%E6%89%BE%5F#0 http://passport.baidu.com/?business&un=%E5

Android 开发 之 Fragment 详解

作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 1. Fragement 概述 Fragement 与 Activity 生命周期关系 : Fragement 嵌入到 Activity 组件中才可以使用, 其生命周期与 Activity 生命周期相关. -- stop 与 destroy 状态 : Activity 暂停 或者 销毁的时候, 其内部嵌入的所有的 Fragement 也会执行

Android入门——Fragment详解之基本概念与用法(一)

引言 Android在3.0中引入了Fragments的概念,其目的是用在大屏幕设备上–例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理 Viewhierarchy的复杂变化. 通过将Activity的布局分散到Fragment中, 你可以在运行时修改Activity的外观,并在由Activity管理的back stack中保存那些变化. 一.F