android-fragments 我如何跳过片段时,去D到A的backpressed?

guykilcj  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(94)

嘿,我正在开发一个应用程序,我现在使用6个片段,当我在后退按钮上时,我想跳过所有其他片段,就像当我在第6个片段(最后一个片段)上时,用户按下后退按钮,我想直接转到片段1,而不需要通过其他片段,如6-〉1。我是Android新手,请指导我如何实现这一点。

g0czyy6m

g0czyy6m1#

如果您使用的是 Navigation 库,那么当您创建一个action来导航到 Fragment 6 时,您可以使用popUpTo属性来清除到 Fragment 1 的堆栈,这样,当您转到 6 时,点击后退按钮就会转到 1
如果你用FragmentTransaction手工操作,当你把addFragment 1 放到容器中时,你应该调用addToBackStack("Fragment 1")(或者其他一些名字来表示那个状态,比如“顶级”之类的),然后你可以用popBackStack("Fragment 1", 0)来撤销在那之后发生的任何事务,基本上就是回到你显示 Fragment 1 的地方。
如果要这样做,就必须拦截 Fragment 6 中的back按钮处理,这样就可以调用popBackStack方法,而不是让它弹出. Here's how you're meant to handle that的顶层状态。
另一个可以尝试的方法是在FragmentTransaction内执行popBackStack调用,从 56,在add * 片段6* 之前将所有内容弹出到 1,然后调用addToBackStack(所以你基本上是回到 1,然后增加一步,把你带到 6,所以只有一步回到 1)。我还没有尝试过,但我认为它应该工作!
老实说,使用 Navigation 库要简单得多,它可以为您解决这类问题

相关问题