1

我有一个包含多个功能模块的应用程序,我想在主模块中使用单个 NavHostFragment 进行导航。

         app
       |  |  |
feature1  |  feature2
       |  |  |
       common

导航图似乎工作正常(我可以添加功能模块中的所有片段,并且当我启动应用程序时会显示 startFragment)但有时我必须从功能模块内部开始导航但我无权访问 NavHostFragment那里。

例如 :

findNavController(navHostFragment).navigate(R.id.loginFragment)
4

1 回答 1

3

根据findNavController() 文档

此方法将定位与此 Fragment 关联的 NavController,首先沿给定 Fragment 的父链查找 NavHostFragment。

这意味着您不需要传递NavHostFragment自身,但可以传递您创建的任何 FragmentNavHostFragment并且它会正确找到NavController.

因此,几乎在所有情况下,您都应该this传入findNavController()

// From anywhere in one of the Fragments in your navigation graph
findNavController(this).navigate(R.id.loginFragment)
于 2018-08-15T12:57:29.493 回答