上篇講到了Fragment的基礎應用,現在給大家演示一下Fragment的生命週期是什麼樣子的。關於Fragemnt的基礎應用,請見http://blog.csdn.net/jiapeng2b/article/details/46919859。
一、首先,我們先看一下Fragment的生命週期
跟Activity生命週期的對比
Activity直接影響它所包含的fragment的生命週期,所以對activity的某個生命週期方法的調用也會產生對fragment相同方法的調用。例如:當activity的onPause()方法被調用時,它所包含的所有的fragment們的onPause()方法都會被調用。
Fragment比activity還要多出幾個生命週期回調方法,這些額外的方法是爲了與activity的交互而設立,如下:
onAttach()
當fragment被加入到activity時調用(在這個方法中可以獲得所在的activity)。
onCreateView()
當activity要得到fragment的layout時,調用此方法,fragment在其中創建自己的layout(界面)。
onActivityCreated()
當activity的onCreated()方法返回後調用此方法。
onDestroyView()
當fragment的layout被銷燬時被調用。
onDetach()
當fragment被從activity中刪掉時被調用。
一旦activity進入resumed狀態(也就是running狀態),你就可以自由地添加和刪除fragment了。因此,只有當activity在resumed狀態時,fragment的生命週期才能獨立的運轉,其它時候是依賴於activity的生命週期變化的
二、測試用的代碼(這裏就簡單實現一下,打印出來)
package com.jp.fragment;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.framentdemo.R;
public class Fragmentdemo extends Fragment {
/**
* 當fragment被加入到activity時調用(在這個方法中可以獲得所在的activity)。
*/
public void onAttach(Activity activity) {
super.onAttach(activity);
System.out.println("Fragment————onAttach()");
}
/**
* 當activity要得到fragment的layout時,調用此方法,fragment在其中創建自己的layout(界面)。
*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.out.println("Fragment————()");
return inflater.inflate(R.layout.title_frament, container, false);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("Fragment————onCreate()");
}
/**
* 當activity的onCreated()方法返回後調用此方法。
*/
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
System.out.println("Fragment————onActivityCreated()");
}
/**
*
*/
public void onStart() {
super.onStart();
System.out.println("Fragment————onStart()");
}
/**
*
*/
public void onResume() {
super.onResume();
System.out.println("Fragment————onResume()");
}
public void onPause() {
super.onPause();
System.out.println("Fragment————onPause()");
}
public void onStop() {
super.onStop();
System.out.println("Fragment————onStop()");
}
/**
* 當fragment的layout被銷燬時被調用。
*/
public void onDestroyView() {
super.onDestroyView();
System.out.println("Fragment————onDestroyView()");
}
public void onDestroy() {
super.onDestroy();
System.out.println("Fragment————onDestroy()");
}
/**
* 當fragment被從activity中刪掉時被調用。
*/
public void onDetach() {
super.onDetach();
System.out.println("Fragment————onDetach()");
}
}
三、場景演示
場景演示 : 切換到該Fragment
切換到其他Fragment:
切換回本身的Fragment:
回到桌面:
回到應用:
退出應用:
就簡單介紹到這裏,希望對大家有幫助~~