嘿,我正在开发一个应用程序,我现在使用6个片段,当我在后退按钮上时,我想跳过所有其他片段,就像当我在第6个片段(最后一个片段)上时,用户按下后退按钮,我想直接转到片段1,而不需要通过其他片段,如6-〉1。我是Android新手,请指导我如何实现这一点。
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调用,从 5 到 6,在add * 片段6* 之前将所有内容弹出到 1,然后调用addToBackStack(所以你基本上是回到 1,然后增加一步,把你带到 6,所以只有一步回到 1)。我还没有尝试过,但我认为它应该工作!老实说,使用 Navigation 库要简单得多,它可以为您解决这类问题
action
popUpTo
FragmentTransaction
add
addToBackStack("Fragment 1")
popBackStack("Fragment 1", 0)
popBackStack
addToBackStack
1条答案
按热度按时间g0czyy6m1#
如果您使用的是 Navigation 库,那么当您创建一个
action
来导航到 Fragment 6 时,您可以使用popUpTo
属性来清除到 Fragment 1 的堆栈,这样,当您转到 6 时,点击后退按钮就会转到 1。如果你用
FragmentTransaction
手工操作,当你把add
Fragment 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
调用,从 5 到 6,在add
* 片段6* 之前将所有内容弹出到 1,然后调用addToBackStack
(所以你基本上是回到 1,然后增加一步,把你带到 6,所以只有一步回到 1)。我还没有尝试过,但我认为它应该工作!老实说,使用 Navigation 库要简单得多,它可以为您解决这类问题