Android Fragment的生命周期和Fragment管理栈的使用(Fragment 二)
文章来自http://www.cnblogs.com/smyhvae/p/3983234.html,向作者表示感谢!请尊重作者的劳动成果,如若转载,请注明前面的出处

我们再把Activity的生命周期和Fragment的生命周期对比一下,就清楚很多了:

先来说说Fragment生命周期中所能够到达的状态:
活动状态:当前的Fragment位于前台,用户可见,可以获得焦点
暂停状态:其他的Activity位于前台,但Fragment依然可见,只是不能够获得焦点
停止状态:Fragment不可见,失去焦点
销毁状态:该Fragment被完全删除,或者该Fragment所在的Activity被结束
1、onAttach(Activity activity):当该Fragment被添加到Activity时被回调,且这个方法只会被回调一次,这个方法中的参数activity就是加载这个Fragment的Activity对象,所以我们可以通过这个方法获得Activity对象
2、onCreate(Bundle):创建Fragment的时候被调用,该方法只会被回调一次
3、onCreateView():每次创建、绘制Fragment的View组件时回调这个方法,Fragment将会显示该方法返回的View组件
4、onActivityCreated():当Fragment所在的Activity被启动完成后回调这个方法
5、onStart():启动Fragment的时候被回调
6、onResume():恢复Fragment的时候被回调,onStart()方法之后一定会回调这个方法
7、onPause():暂停Fragment时被回调
8、onDestroyView():销毁该Fragment所包含的View组件时回调
9、onDestroy() :销毁Fragment时被回调,只会被回调一次
10、onDetach():该方法只会被回调一次
我们还是在实例中来看一下Fragment的生命周期吧。
【实例】在MainActivity中加载一个Fragment:(完整版代码如下)
我们所创建的Fragment的布局文件fragment01.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
MyFragment.java代码如下:
(一定要注意每个方法的作用,当我们需要实际的创建Fragment的时候,就查看一下这个实例,看看到底怎么分配Fragment的实际的任务)
1 package com.example.m01_fragmentlifecycle;
2
3 import android.app.Activity;
4 import android.app.Fragment;
5 import android.os.Bundle;
6 import android.util.Log;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10
11 public class MyFragment extends Fragment {
12 private final String TAG = "MyFragment";
13
14 //获得activity的传递的值
15 @Override
16 public void onAttach(Activity activity) {
17 // TODO Auto-generated method stub
18 super.onAttach(activity);
19 Log.i(TAG, "--MyFragment->>onAttach");
20 }
21
22 //实例化成员变量
23 @Override
24 public void onCreate(Bundle savedInstanceState) {
25 // TODO Auto-generated method stub
26 super.onCreate(savedInstanceState);
27 Log.i(TAG, "--MyFragment->>onCreate");
28 }
29
30 //给当前的fragment绘制UI布局,可以使用线程更新UI
31 @Override
32 public View onCreateView(LayoutInflater inflater, ViewGroup container,
33 Bundle savedInstanceState) {
34 Log.i(TAG, "--MyFragment->>onCreateView");
35 View view = inflater.inflate(R.layout.fragment01, null);
36 // TODO Auto-generated method stub
37 return view;
38 }
39
40 //表示activity执行oncreate方法完成了的时候会调用此方法
41 @Override
42 public void onActivityCreated(Bundle savedInstanceState) {
43 // TODO Auto-generated method stub
44 super.onActivityCreated(savedInstanceState);
45 Log.i(TAG, "--MyFragment->>onActivityCreated");
46 }
47
48 //和activity一致
49 @Override
50 public void onStart() {
51 // TODO Auto-generated method stub
52 super.onStart();
53 Log.i(TAG, "--MyFragment->>onStart");
54 }
55
56 //和activity一致
57 @Override
58 public void onResume() {
59 // TODO Auto-generated method stub
60 super.onResume();
61 Log.i(TAG, "--MyFragment->>onResume");
62 }
63
64 //和activity一致
65 @Override
66 public void onPause() {
67 // TODO Auto-generated method stub
68 super.onPause();
69 Log.i(TAG, "--MyFragment->>onPause");
70 }
71
72 //和activity一致
73 @Override
74 public void onStop() {
75 // TODO Auto-generated method stub
76 super.onStop();
77 Log.i(TAG, "--MyFragment->>onStop");
78 }
79
80 //表示fragment销毁相关联的UI布局
81 @Override
82 public void onDestroyView() {
83 // TODO Auto-generated method stub
84 super.onDestroyView();
85 Log.i(TAG, "--MyFragment->>onDestroyView");
86 }
87
88 //销毁fragment对象
89 @Override
90 public void onDestroy() {
91 // TODO Auto-generated method stub
92 super.onDestroy();
93 Log.i(TAG, "--MyFragment->>onDestroy");
94 }
95
96 //脱离activity
97

