FragmentTransaction add() hide() detach() show(...

使用add()加入fragment时将触发onAttach(),使用attach()不会触发onAttach()ide

使用replace()替换后会将以前的fragment的view从viewtree中删除rem

触发顺序:it

detach()->onPause()->onStop()->onDestroyView()fragment

attach()->onCreateView()->onActivityCreated()->onStart()->onResume()方法

使用hide()方法只是隐藏了fragment的view并无将view从viewtree中删除,随后可用show()方法将view设置为显示top

而使用detach()会将view从viewtree中删除,和remove()不一样,此时fragment的状态依然保持着,在使用attach()时会再次调用onCreateView()来重绘视图,注意使用detach()后fragment.isAdded()方法将返回false,在使用attach()还原fragment后isAdded()会依然返回false(须要再次确认)view

执行detach()和replace()后要还原视图的话, 能够在相应的fragment中保持相应的view,并在onCreateView()方法中经过view的parent的removeView()方法将view和parent的关联删除后返回vi

相关文章
相关标签/搜索