gpt4 book ai didi

android - add()、replace() 和 addToBackStack() 之间的区别

转载 作者:IT老高 更新时间:2023-10-28 12:50:48 24 4
gpt4 key购买 nike

调用这些方法的主要区别是什么:

fragmentTransaction.addToBackStack(name);
fragmentTransaction.replace(containerViewId, fragment, tag);
fragmentTransaction.add(containerViewId, fragment, tag);

替换已经存在的fragment,将fragment添加到activity状态,将activity添加到back stack是什么意思?

其次,使用 findFragmentByTag() ,是否搜索由 add() 添加的标签?/replace()方法或 addToBackStack()方法?

最佳答案

addreplace 之间另一个重要的区别是:

replace 移除现有 fragment 并添加新 fragment 。这意味着当您按下返回按钮时,将创建被替换的 fragment ,并调用其 onCreateView。而 add 保留现有 fragment 并添加一个新 fragment ,这意味着现有 fragment 将处于 Activity 状态并且它们不会处于“暂停”状态,因此当按下后退按钮时 onCreateView 是不调用现有 fragment (添加新 fragment 之前的 fragment )。

对于fragment的生命周期事件onPauseonResumeonCreateView等生命周期事件会在的情况下被调用替换,但在add的情况下它们不会被调用。

编辑:如果她正在使用某种事件总线库,例如 Greenrobot's Eventbus,则应该小心。并通过 add 重用相同的 fragment 以将 fragment 堆叠在其他 fragment 之上。在这种情况下,即使您遵循最佳实践并在 onResume 中注册事件总线并在 onPause 中取消注册,事件总线仍将在添加 fragment 的每个实例中处于 Activity 状态因为 add fragment 不会调用这些 fragment 生命周期方法中的任何一个。结果, fragment 的每个 Activity 实例中的事件总线监听器将处理可能不是您想要的相同事件。

关于android - add()、replace() 和 addToBackStack() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com