首页 > 解决方案 > findNavController 和孤立的片段

问题描述

BottomSheetDialogFragment使用显示功能从主片段启动一个(导航组件无法启动 DialogFragments)。

现在在BottomSheetDialogFragment我有一个按钮可以移动到一个详细的活动。

BottomSheetDialogFragment在图中定义(隔离),它指向详细活动。

但是当我尝试导航时,它找不到 navController。是否可以将 navController 传递给这个孤立的片段?

MainFragment 到 Detail 正在工作 DialogFragment 到 Detail 不工作。

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

在此处输入图像描述

标签: androidandroid-architecture-componentsandroid-architecture-navigation

解决方案


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

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

该怎么办?

您可以将新nav.xml的父活动和(孤立的)片段作为子活动,并从BottomSheetDialogFragment(孤立的)片段活动导航。

否则,我看不到任何阻止您在其中添加相关片段的问题nav.xml

另外你可能需要遵守导航组件的约定,使用导航组件时不要使用show()函数,你可能会错过一些优势!

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

Android Activity 作为一个对话框

解释:-

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

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


推荐阅读