Android 程式开发:(三)碎片简介 —— 3.2 Fragment的生命周期
3624 点击·0 回帖
![]() | ![]() | |
![]() | 就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态。下面的例子测试了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"); } } 2.按Ctrl+F11,将模拟器转换成“横屏模式”。 3.按F11调试。 4.当应用被加载的时候,LogCat窗口中有如下显示。 [plain] view plaincopy03-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 5.按Home键,LogCat窗口中有如下显示。[plain] view plaincopy03-27 12:25:23.174: D/Fragment 1(704): onPause 03-27 12:25:25.174: D/Fragment 1(704): onStop 6.按Home键不放,重新进入应用,LogCat窗口中有如下显示。[plain] view plaincopy03-27 12:26:21.505: D/Fragment 1(704): onStart 03-27 12:26:21.505: D/Fragment 1(704): onResume 7.按返回键,LogCat窗口中有如下显示。[plain] view plaincopy03-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() onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出,谢谢。 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分离的时候,调用这个方法。 摘自 manoel的专栏 | |
![]() | ![]() |