Android 程式开发:(三)初识Fragment —— 3.3生命周期
2012-04-20 14:47
489 查看
就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态。下面的例子测试了fragments的不同状态。
1.创建一个Fragment的子类:Fragment1.java。
[java]
view plaincopyprint?
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");
}
}
[plain]
view plaincopyprint?
03-27 12:25:23.174: D/Fragment 1(704): onPause
03-27 12:25:25.174: D/Fragment 1(704): onStop
[plain]
view plaincopyprint?
03-27 12:27:54.384: D/Fragment 1(704): onPause
03-27 12:27:55.324: D/Fragment 1(704): onStop
03-27 12:27:55.324: D/Fragment 1(704): onDestroyView
03-27 12:27:55.324: D/Fragment 1(704): onDestroy
03-27 12:27:55.324: D/Fragment 1(704): onDetach
03-27 12:27:54.384: D/Fragment 1(704): onPause
03-27 12:27:55.324: D/Fragment 1(704): onStop
03-27 12:27:55.324: D/Fragment 1(704): onDestroyView
03-27 12:27:55.324: D/Fragment 1(704): onDestroy
03-27 12:27:55.324: D/Fragment 1(704): onDetach
解析:
1.当一个fragment被创建的时候,它会经历以下状态.。
onAttach()
onCreate()
onCreateView()
onActivityCreated()
2.当这个fragment对用户可见的时候,它会经历以下状态。
onStart()
onResume()
3.当这个fragment进入“后台模式”的时候,它会经历以下状态。
onPause()
onStop()
4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。
onPause()
onStop()
onDestroyView()
onDetach()
5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate()
onCreateView()
onActivityCreated()
6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached() —— 当fragment和activity关联之后,调用这个方法。
onCreateView() —— 创建fragment中的视图的时候,调用这个方法。
onActivityCreated() —— 当activity的onCreate()方法被返回之后,调用这个方法。
onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
onDetach() —— 当fragment和activity分离的时候,调用这个方法。
1.创建一个Fragment的子类:Fragment1.java。
[java]
view plaincopyprint?
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");
}
}
[plain] view plaincopyprint? 03-27 12:23:32.255: D/Fragment 1(704): onAttach 03-27 12:23:32.255: D/Fragment 1(704): onCreate 03-27 12:23:32.255: D/Fragment 1(704): onCreateView 03-27 12:23:32.274: D/Fragment 1(704): onActivityCreated 03-27 12:23:32.274: D/Fragment 1(704): onStart 03-27 12:23:32.286: D/Fragment 1(704): onResume 03-27 12:23:32.255: D/Fragment 1(704): onAttach 03-27 12:23:32.255: D/Fragment 1(704): onCreate 03-27 12:23:32.255: D/Fragment 1(704): onCreateView 03-27 12:23:32.274: D/Fragment 1(704): onActivityCreated 03-27 12:23:32.274: D/Fragment 1(704): onStart 03-27 12:23:32.286: D/Fragment 1(704): onResume5.按Home键,LogCat窗口中有如下显示。
[plain]
view plaincopyprint?
03-27 12:25:23.174: D/Fragment 1(704): onPause
03-27 12:25:25.174: D/Fragment 1(704): onStop
[plain] view plaincopyprint? 03-27 12:26:21.505: D/Fragment 1(704): onStart 03-27 12:26:21.505: D/Fragment 1(704): onResume 03-27 12:26:21.505: D/Fragment 1(704): onStart 03-27 12:26:21.505: D/Fragment 1(704): onResume7.按返回键,LogCat窗口中有如下显示。
[plain]
view plaincopyprint?
03-27 12:27:54.384: D/Fragment 1(704): onPause
03-27 12:27:55.324: D/Fragment 1(704): onStop
03-27 12:27:55.324: D/Fragment 1(704): onDestroyView
03-27 12:27:55.324: D/Fragment 1(704): onDestroy
03-27 12:27:55.324: D/Fragment 1(704): onDetach
03-27 12:27:54.384: D/Fragment 1(704): onPause
03-27 12:27:55.324: D/Fragment 1(704): onStop
03-27 12:27:55.324: D/Fragment 1(704): onDestroyView
03-27 12:27:55.324: D/Fragment 1(704): onDestroy
03-27 12:27:55.324: D/Fragment 1(704): onDetach
解析:
1.当一个fragment被创建的时候,它会经历以下状态.。
onAttach()
onCreate()
onCreateView()
onActivityCreated()
2.当这个fragment对用户可见的时候,它会经历以下状态。
onStart()
onResume()
3.当这个fragment进入“后台模式”的时候,它会经历以下状态。
onPause()
onStop()
4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。
onPause()
onStop()
onDestroyView()
onDetach()
5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate()
onCreateView()
onActivityCreated()
6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached() —— 当fragment和activity关联之后,调用这个方法。
onCreateView() —— 创建fragment中的视图的时候,调用这个方法。
onActivityCreated() —— 当activity的onCreate()方法被返回之后,调用这个方法。
onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
onDetach() —— 当fragment和activity分离的时候,调用这个方法。
相关文章推荐
- Android 程式开发:(三)初识Fragment —— 3.1简介
- Android 程式开发:(三)初识Fragment —— 3.2动态添加
- Android 程式开发:(三)碎片简介 —— 3.2 Fragment的生命周期
- Android 程式开发:(三)碎片简介 —— 3.2 Fragment的生命周期
- Android 程式开发:(三)初识Fragment —— 3.4fragments实例之间的通信
- Android 程式开发:(一)详解Activity —— 1.1生命周期(前言)
- android开发中fragment的生命周期
- 【Android开发】之Fragment生命周期
- Android开发之Fragment的介绍、使用及生命周期
- Android开发之Activity和Fragment生命周期对比图
- Android开发:Fragment不同操作的生命周期
- Android开发之Fragment的生命周期
- android开发之Fragment 的生命周期及使用方法详解
- Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment
- [转] Android开发:Fragment不同操作的生命周期
- Android开发:Fragment不同操作的生命周期
- Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment
- Android开发:Fragment不同操作的生命周期
- Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment
- Android开发:Fragment不同操作的生命周期