Android 清除backstack并用顶级片段替换当前片段

Android 清除backstack并用顶级片段替换当前片段,android,transactions,fragment,back-stack,Android,Transactions,Fragment,Back Stack,我的android应用程序中有一个活动,处理多个视图/片段的替换。此活动还有一个导航抽屉,用于导航到顶级片段。您可以从顶级片段导航到详细级别片段。 导航抽屉始终可以从左侧滑入。如果当前片段是顶级片段,那么操作栏也可以访问导航抽屉。如果当前片段是详细级别的片段,则可以通过操作栏向后导航(或按后退按钮) 假设我有3个顶级片段,可以通过导航抽屉访问。 片段[1],片段[2],片段[3] 从fragment[1],您可以导航到详细级别fragment[1.1] 现在,用户希望直接从当前的片段[1.1]导

我的android应用程序中有一个活动,处理多个视图/片段的替换。此活动还有一个导航抽屉,用于导航到顶级片段。您可以从顶级片段导航到详细级别片段。
导航抽屉始终可以从左侧滑入。如果当前片段是顶级片段,那么操作栏也可以访问导航抽屉。如果当前片段是详细级别的片段,则可以通过操作栏向后导航(或按后退按钮)

假设我有3个顶级片段,可以通过导航抽屉访问。
片段[1]
片段[2]
片段[3]

fragment[1]
,您可以导航到详细级别
fragment[1.1]

现在,用户希望直接从当前的
片段[1.1]
导航到顶级
片段[3]
。用户只需滑入导航抽屉并单击
片段[3]
的项目
现在,如果用户点击后退按钮,应用程序应该关闭(因为它导航到一个顶级片段)。因此,每当用户导航到顶级片段时,应该清除backbackback。为了检查是否应该显示抽屉指示器,我正在读取GetBackbackEntryCount()值并将其与0进行比较

作为总结。我想从细节级别的片段导航到任何顶级片段,并清除backbackback

问题:
当我通过执行
getSupportFragmentManager().popBackStackImmediate(null,FragmentManager.POP_BACK_STACK_include)
片段事务以相反的方式重放(例如用
片段[1.1]
替换
片段[1]
)。我不想让他们重播。我在onCreateView、onViewCreated、onStart等中进行了大量初始化,还启动了获取数据的任务。我想跳过这一切。只需将细节级别视图替换为新的顶层视图,该视图还没有在backback中

我找不到任何解决方案来清除backbackback而不弹出事务。
有没有一个干净的解决方案来处理这个问题?我必须实施我自己的后退行为吗

编辑: YouTube应用程序的行为也与此类似。当您从细节导航到顶层时,后台将被清除。但是,他们如何在不重放片段事务的情况下清除回退呢


谢谢你的回答。

我想你的问题是你在循环中弹出碎片——我猜。我通常在指定自定义动画的同时,将片段堆栈上的片段推到一起——比如说从右侧滑入新片段,当弹出它时,我们会滑出到右侧。现在-如果您的用户已导航到片段1,然后是1.1,然后是1.2等,并且您希望在用户单击操作栏中的“主页”按钮时导航回1-请为您的片段1事务指定一个名称。您执行的弹出操作使用该名称。还考虑使用POPFBACKStAMP函数代替POPACTSTACKITENT。< /P>