我有一个支持无限导航的应用程序。我使用片段开发了应用程序。当后栈大小增加到15时,我必须删除前5个五个片段,即0-4。我怎样才能做到这一点。
我找到了以下方法
FragmentManager manager = getFragmentManager();
FragmentManager.BackStackEntry fifth = manager.getBackStackEntryAt(4);
manager.popBackStack(fifth.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
我试过上面的代码:(
答案 0 :(得分:1)
由于backstack被恰当地命名并且如此操作,因此无法实现此功能。
你可能可以共同攻击可能会做你所要求的事情,但我绝不会建议任何人实际实现它。
对于好奇,这就是我的想法:
[警告]可怕的黑客
我认为实现此功能的唯一方法是在从5到getBackStackEntryAt(int index)
的循环中使用getBackStackEntryCount()
,将每个BackStackEntry
添加到某种列表中。
获得该列表后,您可以清除整个后台堆栈,从而有效地消除您所请求范围内的项目。遍历List<BackStackEntry>
,在每个上运行getName()
以查找您通过该名称添加的片段。
使用这些名称,您可以查找哪些片段匹配,然后将所有这些片段重新添加到Backstack中。
(这当然假设您一直在添加带有唯一名称的片段。)
根据您的筹码的持续时间,最终结果可能是一个可怕的延迟,而您的设备会计算出所有这些。
我自己没有尝试过,也不建议任何人尝试使用任何人都可以使用的应用程序。
......除非你想要,否则我不是警察。