gpt4 book ai didi

android - fragment 返回堆栈清除问题

转载 作者:行者123 更新时间:2023-11-29 00:03:23 25 4
gpt4 key购买 nike

我正在使用 fragments 和类似的导航流程

 Fragment A -> Fragment B -> Fragment C -> Fragment D 

Form fragment D 我需要通过清除返回堆栈导航到 fragment A 但问题出在 onCreateView() 方法中 fragment C 我正在显示一个对话框

当我通过清除 fragment 上的返回堆栈从 D 导航到 A 时,会出现与 fragment C 中显示的相同的弹出窗口

下面是我用来清除堆栈的代码

FragmentManager fm = getActivity().getSupportFragmentManager();

for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}

最佳答案

您遇到的问题在于您处理 fragment 生命周期的方式。您希望 Fragment C 只执行一次 onCreateView(以显示弹出窗口),但是每次创建 View 时都会调用 onCreateView(例如,每次您调用 remove fragment (替换工作几乎相同,删除 + 添加)然后使用 popbackstack 从 backstack 将其添加回来)。

对于您的问题,有两种解决方案:

更清晰的一个:不是从 onCreateView 显示弹出窗口,而是从 Fragment C 中的 onCreate 调用它。这样你就可以保证它只在 fragment 实例时被调用已创建。

不太干净:不要在 Fragment C 和 D 事务之间使用 replace,而是调用 add,这样当您在 Fragment D 和 Fragment C 中弹出后台堆栈 onCreateView 不会被调用,因为 View 从未被销毁(从未调用过删除/替换)。

关于android - fragment 返回堆栈清除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47199241/

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