我想避免在此导航用例中使用:A - > B - > A - > B - > A - > B ...
其中所有片段实例都保留在后栈中。原因:避免内存不足错误。
我尝试创建一个自己的导航工作流程,如下所述:https://stackoverflow.com/questions/18041583/fragments-backstack-issue?noredirect=1#comment26393904_18041583(它应该模仿活动行为,在开始一个新的活动后调用always(),同时只允许第一个(home)在导航堆栈中)。 但它似乎是非常错误或不可理解的。
所以我也想,实现一个像“带到前面”的活动标志。但我不知道该怎么做。也许是popBackStack的东西 - 但我不知道如果交易已经在后台,如何询问片段。而且我不知道我是否走在正确的道路上。
这应该是一个非常标准的任务,因为每个导航菜单基本上都有这个问题。但是,似乎还没有直接实施,也无法找到有关它的信息。
有什么想法吗?
答案 0 :(得分:0)
看一下FragmentManager backstack。它具有在片段backstack中查看/弹出条目的功能。您可能需要逻辑某些内容:如果用户要求位于堆栈顶部的片段(前一个片段),则退出此片段(返回),否则启动一个新片段。
那会产生:
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”,你可以这样做..但是如果是这样的话,也许你应该在开始一个新的片段之前无条件地弹出片段堆栈(IE No)后面堆栈..)