zoukankan      html  css  js  c++  java
  • fragment的生命周期及其各个周期方法的作用

    先上生命周期图:

    Fragment的生命周期图:

          

    与Activity的生命周期对比图:

    由于Fragment是嵌在Activity中使用的,故其生命周期也是依赖于Activity的周期的,或者说Fragment的生命周期小于Activity的生命周期。

    从上图的生命周期中也可以看出Fragment主要运行在Activity的onResume()与onPause()之间。一旦activity进入resumed状态(也就是running状态),就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。

    下面来看看每一个生命周期的作用:

     1 import android.app.Activity;
     2 import android.app.Fragment;
     3 import android.os.Bundle;
     4 import android.util.Log;
     5 import android.view.LayoutInflater;
     6 import android.view.View;
     7 import android.view.ViewGroup;
     8 
     9 
    10 public class MyFragment2 extends Fragment{
    11 
    12     @Override //fragment和activity建立关联时调用
    13     public void onAttach(Activity activity) {
    14         super.onAttach(activity);
    15     }
    16     
    17     //当创建 fragment 时系统调用此方法。在其中初始化 fragment 的基础组件。可参考 activity 的说明。
    18     @Override
    19     public void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21     }
    22     
    23     
    24     @Override 
    25     //当fragment加载布局文件时调用。 即fragment要画自己的界面时调用(在真正显示之前)此方法。
    26     //这个方法返回 frament 的 layout 的根控件。如果这个 fragment 不提供界面,那它应返回 null。
    27     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    28         View view=inflater.inflate(R.layout.fragface2,container,false);
    29         return view;
    30     }
    31     
    32     @Override //当activity的oncreate执行后调用
    33     public void onActivityCreated(Bundle savedInstanceState) {
    34         super.onActivityCreated(savedInstanceState);
    35     }
    36 
    37     @Override//与Activity的一样,此时可以看到Fragment的界面,但还不能交互
    38     public void onStart() {
    39         super.onStart();
    40     }
    41 
    42     @Override//与用户交互
    43         public void onResume() {
    44             super.onResume();
    45         }
    46 
    47     @Override//可见不可交互
    48     public void onPause() {
    49         super.onPause();
    50     }
    51     
    52     @Override//不可见,fragment进入后台模式
    53     public void onStop() {
    54         super.onPause();
    55     }
    56     
    57     @Override// 当fragment中的视图被移除的时候,调用这个方法。
    58     public void onDestroyView() {
    59         super.onDestroyView();
    60     }
    61         
    62     @Override//Fragment被销毁的时候
    63     public void onDestroy() {
    64         super.onDestroy();
    65 
    66     }
    67 
    68     @Override //解除与Activity关联时调用
    69     public void onDetach() {
    70         super.onDetach();
    71     }
    72 
    73     @Override
    74     public void onStop() {
    75         
    76         Log.e("robin debug", "fragment onStop...2");
    77         super.onStop();
    78     }
    79     
    80 }

    fragment的基本使用步骤详看 http://www.cnblogs.com/huaqing-wkc/p/4926288.html

  • 相关阅读:
    031-进阶(日志)
    Django 路由系统
    C++ 面向对象(接口-抽象类)
    C++ 面向对象(多态)
    C++ 面向对象(数据抽象)
    三十、首页列表显示全部问答,完成问答详情页布局
    二十九、制作首页的显示列表
    二十八、发布功能完成
    二十七、登录之后更新导航
    二十六、完成登录功能,用session记住用户名
  • 原文地址:https://www.cnblogs.com/huaqing-wkc/p/4929599.html
Copyright © 2011-2022 走看看