使用单个NavHostFragment导航具有多个模块的应用

时间:2018-08-15 12:38:39

标签: android kotlin android-architecture-components android-architecture-navigation android-module

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

         app
       |  |  |
feature1  |  feature2
       |  |  |
       common

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

例如:

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

1 个答案:

答案 0 :(得分:3)

按照findNavController() documentation

  

此方法将找到与此片段相关联的NavController,首先在给定片段的父链中查找NavHostFragment。

这意味着您不需要传递NavHostFragment本身,但是可以传递NavHostFragment创建的任何片段,它将正确找到NavController。 / p>

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

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