androidx导航不能返回到宿主Fragment
创始人
2024-10-12 11:02:58
0

如果你使用的是 Navigation Component,当你从一个嵌套 Fragment(例如一个包含有 BottomNavigationView 的 Fragment)切换到另一个 Fragment 时,你可能会遇到 Navigation Component 在返回上一页时直接退出 App 的问题。这是因为默认情况下,Navigation Component 会将目标 Fragment 加入到 back stack 中,而不是将它添加到宿主 Fragment 中。

要解决这个问题,你可以通过调用 NavController 的 popBackStack() 方法来手动将 Fragment 返回到宿主 Fragment 中:

val navController = findNavController()
if (!navController.popBackStack()) {
    requireActivity().finish()
}

在这个例子中,我们使用了一个 if 语句来判断是否可以返回上一页。如果不能返回上一页,那么我们就调用 requireActivity().finish() 来退出 App。

另外一个解决方案是在 Navigation Component 中使用 popUpToInclusive() 和 popUpTo() 方法来跳过嵌套 Fragment,直接返回到宿主 Fragment。你可以通过设置 popUpToInclusive 的值为 true 来确保 popUpTo() 方法不会将它自己也从 back stack 中移除:


在这个例子中,我们设置了 popUpTo 的值为 myFragment,并且将 popUpToInclusive 设为 true,这样当我们从 anotherFragment 返回时,它不会将 myFragment 也从 back stack 中移除。

总之,无论你选择哪种方法,都应该在你的 Navigation Graph 中添加正确的 popUpTo 和 popUpToInclusive 属性,以确保 Navigation Component 可以正确地返回到宿主 Fragment。

相关内容

热门资讯

据统计!pokemomo辅助软... 据统计!pokemomo辅助软件,八张透视辅助,演示教程(有挂细节)1、全新机制【八张透视辅助ai辅...
明白辅助挂!红龙poker作弊... 明白辅助挂!红龙poker作弊指令,奇迹脚本辅助,大纲教程(有挂方针)1、游戏颠覆性的策略玩法,独创...
目前!德州圈脚本,德普之星辅助... 目前!德州圈脚本,德普之星辅助器,积累教程(真的有挂)1、操作简单,无需德普之星辅助器手机版透视脚本...
相较于以往!智星菠萝有挂吗,来... 相较于以往!智星菠萝有挂吗,来来拼十辅助免费辅助,方针教程(存在有挂)1、首先打开来来拼十辅助免费辅...
据通报!德扑之心免费透视,广东... 据通报!德扑之心免费透视,广东雀神挂机怎么样,步骤教程(有挂方略)1、该软件可以轻松地帮助玩家将广东...
有玩家发现!aapoker真的... 有玩家发现!aapoker真的假的,闲聚辅助器,绝活儿教程(讲解有挂)1)闲聚辅助器免费钻石:进一步...
方法辅助挂!德州局脚本,博雅红... 方法辅助挂!德州局脚本,博雅红河西元红河挂,方式教程(有挂讲解)1、博雅红河西元红河挂免费辅助多个强...
有玩家发现!扑克之星辅助,jj... 有玩家发现!扑克之星辅助,jj斗地主外卦,讲义教程(有挂分析)1、进入到jj斗地主外卦是否有挂之后,...
黑科技辅助挂!hhpoker辅... 黑科技辅助挂!hhpoker辅助,陕麻圈辅助开挂软件,妙招教程(有挂详情);1、下载好陕麻圈辅助开挂...
为切实保障!epoker透视底... 为切实保障!epoker透视底牌,哈局八张辅助,总结教程(有挂方略)1、该软件可以轻松地帮助玩家将哈...