实例探究Android应用编写时Fragment的生命周期问题

2019-12-10 18:58:23王振洲

Fragment1 onCreate
Fragment1 onCreateView
Fragment1 onStart
Fragment1 onResume

用以下代码切到Fragment2:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(Fragment1);
ft.add(R.id.simple_fragment, Fragment2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();

Fragment1不走任何生命周期,但会调onHiddenChanged方法

Fragment2 onCreate
Fragment2 onCreateView
Fragment2 onStart
Fragment2 onResume

回到Fragment1,Remove Fragment2:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(Fragment2);
ft.show(Fragment1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();

Fragment1还是不走任何生命周期,调onHiddenChanged方法

Fragment2 onPause
Fragment2 onStop
Fragment2 onDestoryView
Fragment2 onDestory