java – 在FragmentTransaction中使用add().addToBackStack(),add().detach()和replace().addToBackStack()有什么区别?

前端之家收集整理的这篇文章主要介绍了java – 在FragmentTransaction中使用add().addToBackStack(),add().detach()和replace().addToBackStack()有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Android docs上的FragmentTransaction项目中,描述了方法replace()与为当前视图中添加的所有片段调用remove()方法相同,然后调用add()方法.在这种情况下,为了恢复以前的片段,我们可以使用addBackToStack(),这意味着事务状态仍然由片段管理器管理,并且当我们弹出堆栈时它会反转它的操作. @H_403_2@另一方面,当我们使用add()实现事务时,除了使用add().addBackToStack()之外,我们可以使用detach()方法并使用attach()恢复片段,这些行为与addBackToStack().

@H_403_2@那么这些场景背后的区别是什么?

解决方法

我研究的更多,显然,detach()和addToBackStack()之间的区别在片段的生命周期.当我们在后面的堆栈中添加Fragment时,依次调用onPause(),onStop()和onDestroyView()之后的方法.在这种状态下,片段清理与其视图相关联的资源,并在那里等待再次被调用.从后面的堆栈返回到布局被称为方法onCreateView()只是为片段绘制其用户界面.其实这个片段没有被破坏. @H_403_2@另一方面,当我们使用detach()来删除或替换片段时,首先调用所有相同的方法(onPause(),onStop(),onDestroyView()),将这两个方法:onDestroy(),to做最后的清理片段的状态和
onDetach(),将该片段分离为不再与其活动关联.

@H_403_2@基本上,在幕后,他们没有相同的行为:使用addToBackStack()片段保持实例化和detach(),不要.

猜你在找的Java相关文章