曾经有同事问我切换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的生命周期:
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!
原文链接:https://blog.csdn.net/k393393/article/details/78412160