Android的Fragment的生命周期各状态和回调函数使用

2019-12-10 18:57:56于海丽

再回到界面

05-07 05:55:49.441: I/Log(1990): onRestart
05-07 05:55:49.441: I/Log(1990): onStart
05-07 05:55:49.441: I/Log(1990): onStart_Fragment
05-07 05:55:49.441: I/Log(1990): onResume
05-07 05:55:49.441: I/Log(1990): onResume_Fragment

销毁activity

05-07 05:59:02.293: I/Log(1990): onPause_Fragment
05-07 05:59:02.293: I/Log(1990): onPause
05-07 05:59:02.757: I/Log(1990): onStop_Fragment
05-07 05:59:02.757: I/Log(1990): onStop
05-07 05:59:02.757: I/Log(1990): onDestroyView_Fragment
05-07 05:59:02.757: I/Log(1990): onDestroy_Fragment
05-07 05:59:02.757: I/Log(1990): onDetach_Fragment
05-07 05:59:02.757: I/Log(1990): onDestroy

可以看出 当现实fragment的时候都先执行activity方法,当销毁的时候都是现执行 fragment的方法,这样更好理解fragment是嵌套在activity中

下面一个综合性的例子测试了fragments的不同状态:
1.创建一个Fragment的子类:Fragment1.java。

package net.horsttnann.Fragments; 
 
import android.app.Activity; 
import android.app.Fragment; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
public class Fragment1 extends Fragment { 
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
 
    Log.d("Fragment 1", "onCreateView"); 
 
    // ---Inflate the layout for this fragment--- 
    return inflater.inflate(R.layout.fragment1, container, false); 
  } 
 
  @Override 
  public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    Log.d("Fragment 1", "onAttach"); 
  } 
 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d("Fragment 1", "onCreate"); 
  } 
 
  @Override 
  public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    Log.d("Fragment 1", "onActivityCreated"); 
  } 
 
  @Override 
  public void onStart() { 
    super.onStart(); 
    Log.d("Fragment 1", "onStart"); 
  } 
 
  @Override 
  public void onResume() { 
    super.onResume(); 
    Log.d("Fragment 1", "onResume"); 
  } 
 
  @Override 
  public void onPause() { 
    super.onPause(); 
    Log.d("Fragment 1", "onPause"); 
  } 
 
  @Override 
  public void onStop() { 
    super.onStop(); 
    Log.d("Fragment 1", "onStop"); 
  } 
 
  @Override 
  public void onDestroyView() { 
    super.onDestroyView(); 
    Log.d("Fragment 1", "onDestroyView"); 
  } 
 
  @Override 
  public void onDestroy() { 
    super.onDestroy(); 
    Log.d("Fragment 1", "onDestroy"); 
  } 
 
  @Override 
  public void onDetach() { 
    super.onDetach(); 
    Log.d("Fragment 1", "onDetach"); 
  } 
}