zoukankan      html  css  js  c++  java
  • fragment源码解析

    首先必须了解fragment的生命周期,如下图

     

    理解周期的话可以跟activity的生命周期进行比较,注意看注释,认真看源码上的注释,一步一步看。

    onAttach()

    /**
         * Called when a fragment is first attached to its activity.
         * {@link #onCreate(Bundle)} will be called after this.
         */
        public void onAttach(Activity activity) {
            mCalled = true;
        }

    onCreateView()

     1 /**
     2      * Called to have the fragment instantiate its user interface view.
     3      * This is optional, and non-graphical fragments can return null (which
     4      * is the default implementation).  This will be called between
     5      * {@link #onCreate(Bundle)} and {@link #onActivityCreated(Bundle)}.
     6      * 
     7      * <p>If you return a View from here, you will later be called in
     8      * {@link #onDestroyView} when the view is being released.
     9      * 
    10      * @param inflater The LayoutInflater object that can be used to inflate
    11      * any views in the fragment,
    12      * @param container If non-null, this is the parent view that the fragment's
    13      * UI should be attached to.  The fragment should not add the view itself,
    14      * but this can be used to generate the LayoutParams of the view.
    15      * @param savedInstanceState If non-null, this fragment is being re-constructed
    16      * from a previous saved state as given here.
    17      * 
    18      * @return Return the View for the fragment's UI, or null.
    19      */
    20     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    21             Bundle savedInstanceState) {
    22         return null;
    23     }

    onActivityCreated()

    /**
         * Called when the fragment's activity has been created and this
         * fragment's view hierarchy instantiated.  It can be used to do final
         * initialization once these pieces are in place, such as retrieving
         * views or restoring state.  It is also useful for fragments that use
         * {@link #setRetainInstance(boolean)} to retain their instance,
         * as this callback tells the fragment when it is fully associated with
         * the new activity instance.  This is called after {@link #onCreateView}
         * and before {@link #onViewStateRestored(Bundle)}.
         *
         * @param savedInstanceState If the fragment is being re-created from
         * a previous saved state, this is the state.
         */
        public void onActivityCreated(Bundle savedInstanceState) {
            mCalled = true;
        }

    onDestroyView()

      与onCreateView()相对应

     /**
         * Called when the view previously created by {@link #onCreateView} has
         * been detached from the fragment.  The next time the fragment needs
         * to be displayed, a new view will be created.  This is called
         * after {@link #onStop()} and before {@link #onDestroy()}.  It is called
         * <em>regardless</em> of whether {@link #onCreateView} returned a
         * non-null view.  Internally it is called after the view's state has
         * been saved but before it has been removed from its parent.
         */
        public void onDestroyView() {
            mCalled = true;
        }

    onDetach()

      与onAttach()相对应

    /**
         * Called when the fragment is no longer attached to its activity.  This
         * is called after {@link #onDestroy()}.
         */
        public void onDetach() {
            mCalled = true;
        }

    接着通过souce Insight查看android.support.v4.app.frament源码

  • 相关阅读:
    前后端分离djangorestframework—— 在线视频平台接入第三方加密防盗录视频
    ORACLE ASMLIB
    1519484
    How to deploy Oracle 12c Release 2 Grid and RAC Database on RHEL 7.x
    2647673
    Installation of SAP on RAC with Oracle ASM(转)
    redhat7.2下VNC没法显示图像
    Oracle12C
    (转)linux 内存管理——内核的shmall 和shmmax 参数
    ora121 tips
  • 原文地址:https://www.cnblogs.com/could-deng/p/5028847.html
Copyright © 2011-2022 走看看