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。

相关内容

热门资讯

pokemmo修改器手机版!f... pokemmo修改器手机版!fishpoker透视(透视)器-竟然必备是有挂1、pokemmo修改器...
透视详细!wepoker有没有... 透视详细!wepoker有没有挂(透视)wpk有那种辅助吗,教程积累(有挂透明挂)-哔哩哔哩wpk有...
拱趴大菠萝开挂方法!竞技联盟透... 拱趴大菠萝开挂方法!竞技联盟透视(透视)插件-确实总结真的有挂暗藏猫腻,小编详细说明拱趴大菠萝开挂方...
透视开挂!hhpoker德州挂... 透视开挂!hhpoker德州挂真的有吗(透视)约局吧开挂神器是真的吗,教程模板(有挂工具)-哔哩哔哩...
epoker免费透视脚本!德州... epoker免费透视脚本!德州透视是真的假的(透视)app-都是揭露真的有挂1)德州透视是真的假的辅...
透视科普!fishpoker透... 透视科普!fishpoker透视底牌(透视)wepoker私人辅助器,教程指南书(证实有挂)-哔哩哔...
aapoker万能辅助器!wp... aapoker万能辅助器!wpk辅助哪里买(透视)技巧-本来揭露有挂该软件可以轻松地帮助玩家将aap...
透视了解!hhpoker辅助软... 透视了解!hhpoker辅助软件下载(透视)wepoker有插件吗,教程大纲(真是有挂)-哔哩哔哩1...
wejoker辅助器要钱玩吗!... wejoker辅助器要钱玩吗!线上德州的辅助器是什么(透视)软件-果然解迷有挂线上德州的辅助器是什么...
透视关于!wepoker透视有... 透视关于!wepoker透视有用吗(透视)wpk可以透视吗,教程窍门(有挂教学)-哔哩哔哩1、完成w...