先上生命周期图:
Fragment的生命周期图:
与Activity的生命周期对比图:
由于Fragment是嵌在Activity中使用的,故其生命周期也是依赖于Activity的周期的,或者说Fragment的生命周期小于Activity的生命周期。
从上图的生命周期中也可以看出Fragment主要运行在Activity的onResume()与onPause()之间。一旦activity进入resumed状态(也就是running状态),就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
下面来看看每一个生命周期的作用:
1 import android.app.Activity; 2 import android.app.Fragment; 3 import android.os.Bundle; 4 import android.util.Log; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.view.ViewGroup; 8 9 10 public class MyFragment2 extends Fragment{ 11 12 @Override //fragment和activity建立关联时调用 13 public void onAttach(Activity activity) { 14 super.onAttach(activity); 15 } 16 17 //当创建 fragment 时系统调用此方法。在其中初始化 fragment 的基础组件。可参考 activity 的说明。 18 @Override 19 public void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 } 22 23 24 @Override 25 //当fragment加载布局文件时调用。 即fragment要画自己的界面时调用(在真正显示之前)此方法。 26 //这个方法返回 frament 的 layout 的根控件。如果这个 fragment 不提供界面,那它应返回 null。 27 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 28 View view=inflater.inflate(R.layout.fragface2,container,false); 29 return view; 30 } 31 32 @Override //当activity的oncreate执行后调用 33 public void onActivityCreated(Bundle savedInstanceState) { 34 super.onActivityCreated(savedInstanceState); 35 } 36 37 @Override//与Activity的一样,此时可以看到Fragment的界面,但还不能交互 38 public void onStart() { 39 super.onStart(); 40 } 41 42 @Override//与用户交互 43 public void onResume() { 44 super.onResume(); 45 } 46 47 @Override//可见不可交互 48 public void onPause() { 49 super.onPause(); 50 } 51 52 @Override//不可见,fragment进入后台模式 53 public void onStop() { 54 super.onPause(); 55 } 56 57 @Override// 当fragment中的视图被移除的时候,调用这个方法。 58 public void onDestroyView() { 59 super.onDestroyView(); 60 } 61 62 @Override//Fragment被销毁的时候 63 public void onDestroy() { 64 super.onDestroy(); 65 66 } 67 68 @Override //解除与Activity关联时调用 69 public void onDetach() { 70 super.onDetach(); 71 } 72 73 @Override 74 public void onStop() { 75 76 Log.e("robin debug", "fragment onStop...2"); 77 super.onStop(); 78 } 79 80 }
fragment的基本使用步骤详看 http://www.cnblogs.com/huaqing-wkc/p/4926288.html