我有一个带有多个功能模块的应用程序,我想在主模块中使用一个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)