天天看點

Fragment的切換重新整理UI布局以及Fragment的生命周期解釋

曾經有同僚問我切換Fragment的時候為啥不執行onResume這個方法,也沒辦法重新整理ui界面

@Override
    public void onResume() {
        super.onResume();

    }
           

其實Fragment的切換重新整理ui要在onHiddenChange這個方法中

@Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged( hidden );
        if (hidden) {// 不在最前端界面顯示
        } else {// 重新顯示到最前端中
            initDBView();
        }
    }
           

這個方法就是判斷Fragment可見與影藏的方法,如果Fragment建立commit後那麼會執行onResume方法,如果Fragment建立後隻是影藏了(hide),另一個Fragment用add方法, 然後再顯示那麼就會執行onHiddenChange這個方法,onResume是不執行的,onResume是和Activity有關系的。

Fragment的生命周期:

Fragment的切換重新整理UI布局以及Fragment的生命周期解釋

onAttach

當Fragment添加到Activity的時候調用,此方法隻會調用一次

    onCreate

  建立Fragment的時候調用

     onCreateView

                當建立Fragment關聯的View時候調用,并将此View關聯到Activity視圖樹種

     onActivityCreate

當Fragment所關聯的Activity建立完畢,也就是onCreate執行完畢并return的時候執行

     onstart

                啟動Fragment的時候調用,Fragment可見

     onResume

Fragment可見,并且可以擷取焦點

      onPause

Fragment暫停,Fragment失去焦點

      onStop

Fragment停止,Activity被停止或者Fragment入棧了

      onDestroyView

銷毀Fragment關聯的View

       onDestroy 

銷毀Fragment

       onDettach

當Fragment從Activity失去關聯,Fragment被銷毀、被替換等

Fragment生命周期執行順序:

當Fragment1被最初建立的時候

       onAttach-->onAttachFragment(Activity中的方法)-->onCreate-->onCreateView-->onActivityCreate-->onStart-->onResume

當手機鎖屏了、回到桌面

       onPause-->onStop

       當手機打開螢幕

       onStart-->onResume

       當切換到Fragment2的時候Fragment1被Replace

       onPause-->onStop-->onDestroyView

      切換到Fragment1的時候

      onCreteView-->onActivityCreate-->onStart-->onResume

      如果Fragment1隻是hide話,Fragment2 用add方法, 會執行這個方法onHiddenChange

  其它生命周期未見列印。

  最後Fragment在事物空間操作後一定要commit!

繼續閱讀