我有一个具有多个功能模块的应用程序,我想在主模块中使用一个NavHostFragment进行导航。
app
| | |
feature1 | feature2
| | |
common
导航图似乎工作正常(我可以从功能模块添加所有片段,并且在启动应用程序时会显示startFragment),但有时我必须从功能模块内部开始导航,但我无权访问到那里的NavHostFragment。
例如:
findNavController(navHostFragment).navigate(R.id.loginFragment)
答案 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)