如何避免后端堆栈中的多个片段实例?

Ixx*_*Ixx 5 android android-fragments

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

所有片段实例都保存在后栈中.原因:避免内存不足错误.

我尝试创建一个自己的导航工作流程,如下所述:https://stackoverflow.com/questions/18041583/fragments-backstack-issue?noded = 1#comment26393904_18041583(应该模仿活动行为,在启动后始终调用finish()一个新的,同时只允许导航堆栈中的第一个(主页).但它似乎是非常错误或不可理解的.

所以我也想,实现像活动"带到前面"标志的行为.但我不知道该怎么做.也许是popBackStack的东西 - 但我不知道如果交易已经在后台,如何询问片段.而且我不知道我是否走在正确的道路上.

这应该是一个非常标准的任务,因为每个导航菜单基本上都有这个问题.但是,似乎还没有直接实施,也无法找到有关它的信息.

任何的想法?

C B*_*B J 0

看一下 FragmentManager 的后台堆栈。它具有用于查看/弹出片段返回堆栈中的条目的功能。您可能需要以下逻辑:如果用户请求位于堆栈顶部的片段(前一个片段),则退出该片段(返回),否则启动一个新片段。

这会产生:

A (user asks for B)
A->B (user asks for A again)
A
Run Code Online (Sandbox Code Playgroud)

..但不会阻止

A (user asks for B)
A->B (user asks for C)
A->B->C (user asks for A)
A->B->C->A
Run Code Online (Sandbox Code Playgroud)

这将需要将堆栈从“C”倒回到“A”,您可以这样做..但如果是这种情况,也许您应该在开始新片段之前无条件弹出片段堆栈(IE No back stack at全部..)