Android 找不到';对话片段中的
我有一个BottomSheetDialogFragment,其中包含一个NavHostFragment,如下所示: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
<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()