微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

Android docs上的FragmentTransaction项目中,描述了方法replace()与为当前视图中添加的所有片段调用remove()方法相同,然后调用add()方法.在这种情况下,为了恢复以前的片段,我们可以使用addBackToStack(),这意味着事务状态仍然由片段管理器管理,并且当我们弹出堆栈时它会反转它的操作.

另一方面,当我们使用add()实现事务时,除了使用add().addBackToStack()之外,我们可以使用detach()方法并使用attach()恢复片段,这些行为与addBackToStack().

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

解决方法

我研究的更多,显然,detach()和addToBackStack()之间的区别在片段的生命周期.当我们在后面的堆栈中添加Fragment时,依次调用onPause(),onStop()和onDestroyView()之后的方法.在这种状态下,片段清理与其视图相关联的资源,并在那里等待再次被调用.从后面的堆栈返回到布局被称为方法onCreateView()只是为片段绘制其用户界面.其实这个片段没有被破坏.

另一方面,当我们使用detach()来删除或替换片段时,首先调用所有相同的方法(onPause(),onStop(),onDestroyView()),将这两个方法:onDestroy(),to做最后的清理片段的状态和
onDetach(),将该片段分离为不再与其活动关联.

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

原文地址:https://www.jb51.cc/java/123328.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐