gpt4 book ai didi

android - 如何避免返回堆栈中的 fragment 的多个实例?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:15 24 4
gpt4 key购买 nike

我想在这个导航用例中避免这种情况:A -> B -> A -> B -> A -> B ...

所有 fragment 实例都保存在后台堆栈中。原因:避免内存不足错误。

我尝试创建自己的导航工作流程,如下所述:https://stackoverflow.com/questions/18041583/fragments-backstack-issue?noredirect=1#comment26393904_18041583 (这应该模仿在开始一个新 Activity 后总是调用 finish() 的 Activity 行为,并且只让导航堆栈中的第一个(主页))。但它似乎要么非常错误,要么难以理解。

因此,我还想实现一种行为,例如“置于前面”标志的 Activity 。但我不知道该怎么做。也许与 popBackStack 有关 - 但我不知道如何询问 fragment 是否交易已经在后台。而且我不知道我是否走在正确的道路上。

这应该是一个很标准的任务,因为每个导航菜单基本上都有这个问题。但是,似乎仍然无法直接实现,也找不到相关信息。

有什么想法吗?

最佳答案

查看 FragmentManager 后台堆栈。它具有查看/弹出 fragment 后台堆栈中的条目的功能。您可能需要类似这样的逻辑:如果用户请求位于堆栈顶部的 fragment (前一个 fragment ),则退出该 fragment (返回),否则开始一个新 fragment 。

这会产生:

A (user asks for B)
A->B (user asks for A again)
A

..但不会阻止

A (user asks for B)
A->B (user asks for C)
A->B->C (user asks for A)
A->B->C->A

这需要将堆栈从“C”倒回“A”,您可以这样做......但如果是这种情况,也许您应该在开始新 fragment 之前无条件地弹出 fragment 堆栈(I.E. 否完全返回堆栈..)

关于android - 如何避免返回堆栈中的 fragment 的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18042411/

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