findNavController和孤立的片段

时间:2019-04-10 20:55:45

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

我使用show函数从主片段中启动BottomSheetDialogFragment(导航组件无法启动DialogFragments)。

BottomSheetDialogFragment中,我有一个按钮可以移至详细信息活动。

我在图表中(已隔离)定义了BottomSheetDialogFragment,它指向详细信息活动。

但是当我尝试导航时,找不到navController。是否可以将navController传递给此隔离的片段?

MainFragment to Detail正在运行 DialogFragment to Detail无法正常工作。

我尝试过: -findNavController:未设置导航 -activity.findNavController(...)

enter image description here

1 个答案:

答案 0 :(得分:0)

但是当我尝试导航时,找不到navController 。这就是导航组件的工作方式。

是否可以将navController传递给这个孤立的片段?我希望您不要这样做,替换navController并不是您情况的理想解决方案。

该怎么办?

您可以拥有新的nav.xml并具有新的父级活动,并将(隔离的)片段作为子级,然后从BottomSheetDialogFragment导航至(隔离的)片段活动。

否则,我看不到任何问题可以阻止您在一个nav.xml中添加相关片段。

此外,您可能需要遵守导航组件合同,在使用导航组件时不要使用show()函数,您可能会错过一些好处!

您真的不需要显示功能,请参见:-

Android Activity as a dialog

说明:-

您可以有一个父活动,并将其主题设置为Dialog,所以所有片段(在nav.xml内)都将是对话框。

我以前在我的一个应用中使用过这个技巧。