Android 找不到';对话片段中的

Android 找不到';对话片段中的,android,android-dialogfragment,android-navigation,android-architecture-navigation,Android,Android Dialogfragment,Android Navigation,Android Architecture Navigation,我有一个BottomSheetDialogFragment,其中包含一个NavHostFragment,如下所示: <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <LinearLayout android:layout_width="ma

我有一个BottomSheetDialogFragment,其中包含一个NavHostFragment,如下所示:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <fragment
                android:id="@+id/add_feeling_nav_host_fragment"
                android:name="androidx.navigation.fragment.NavHostFragment"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                app:defaultNavHost="true"
                app:navGraph="@navigation/add_feeling_graph" />

    </LinearLayout>
</layout>
第一个选项崩溃,因为它找不到ID,第二个选项找到父导航控制器并使用它


我对另一个片段有一个相同的设置,但是它不是一个对话框,它工作得非常好。你知道问题可能是什么吗?感谢

活动?.findNavController(R.id.add\u feeling\u nav\u host\u fragment)
不起作用-只有当对话框片段处于活动状态(显示)并且是活动的UI容器的一部分时,它才会起作用-
对话框片段
在与根导航图不在同一层次结构中的窗口的其他实例中起作用

使用
NavHostFragment.findNavController(fragment)
ktx
扩展名
fragment.findNavController()
,其中
fragment
是您的对话框片段。对话框片段应以其视图膨胀的方式显示。最好的方法是在对话框中

导航图的调整可能也需要-我不能确切地说,因为没有代码


希望有帮助。

首先,您应该发布更多代码,让我们了解整个情况。一个小细节是导航xml中不需要
。碎片还可以。我建议你看看这个,这正是你需要的解决方案


希望有帮助。

你试过fragment.findNavController()吗?@Man我试过了是的,没有difference@PavSidhu请向我们展示包含对话框片段的导航图
activity?.findNavController(R.id.add_feeling_nav_host_fragment)
view.findNavController()