展会信息港展会大全

Android新手入门教程(十四):初识Fragment の生命周期
来源:互联网   发布日期:2015-09-29 11:02:20   浏览:2099次  

导读:就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前...

就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态。下面的例子测试了fragments的不同状态。

1.创建一个Fragment的子类:Fragment1.java。

[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");

}

}

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] 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): onResume

5.按Home键,LogCat窗口中有如下显示。

[plain] 03-27 12:25:23.174: D/Fragment 1(704): onPause

03-27 12:25:25.174: D/Fragment 1(704): onStop

03-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] 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): onResume

7.按返回键,LogCat窗口中有如下显示。

[plain] 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分离的时候,调用这个方法。

摘自horsttnann的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港