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

         app
       |  |  |
feature1  |  feature2
       |  |  |
       common

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

例如 :
findNavController(navHostFragment).navigate(R.id.loginFragment)

最佳答案

按照findNavController() documentation:



这意味着您不需要传递NavHostFragment本身,但是可以传递由NavHostFragment创建的任何Fragment,它将正确找到NavController

因此,在几乎所有情况下,都应该将this传递给findNavController():

// From anywhere in one of the Fragments in your navigation graph
findNavController(this).navigate(R.id.loginFragment)

07-27 17:40