我使用show函数从主片段中启动BottomSheetDialogFragment
(导航组件无法启动DialogFragments)。
在BottomSheetDialogFragment
中,我有一个按钮可以移至详细信息活动。
我在图表中(已隔离)定义了BottomSheetDialogFragment
,它指向详细信息活动。
但是当我尝试导航时,找不到navController。是否可以将navController传递给此隔离的片段?
MainFragment to Detail正在运行 DialogFragment to Detail无法正常工作。
我尝试过: -findNavController:未设置导航 -activity.findNavController(...)
答案 0 :(得分:0)
但是当我尝试导航时,找不到navController 。这就是导航组件的工作方式。
是否可以将navController传递给这个孤立的片段?我希望您不要这样做,替换navController并不是您情况的理想解决方案。
该怎么办?
您可以拥有新的nav.xml
并具有新的父级活动,并将(隔离的)片段作为子级,然后从BottomSheetDialogFragment
导航至(隔离的)片段活动。
否则,我看不到任何问题可以阻止您在一个nav.xml
中添加相关片段。
此外,您可能需要遵守导航组件合同,在使用导航组件时不要使用show()
函数,您可能会错过一些好处!
您真的不需要显示功能,请参见:-
说明:-
您可以有一个父活动,并将其主题设置为Dialog,所以所有片段(在nav.xml
内)都将是对话框。
我以前在我的一个应用中使用过这个技巧。