天天看点

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!

继续阅读