由于某种条件,我需要在应用程序的两个不同 Activity 中使用两个navHostFragment
。
一切正常,直到我在应用程序中添加第二个navhostframent
,这会创建一个带有错误的inflateexception
:
Binary XML file line #36: Duplicate id 0x7f09018a, tag null, or parent id 0xffffffff with another fragment for androidx.navigation.fragment.NavHostFragment
以下是我的第二个navhost片段: <fragment
android:id="@+id/nav_host_fragment_supervisor"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomNav"
android:layout_below="@+id/appbar"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_graph_supervisor" />
请帮忙。 最佳答案
问题是您使用<片段>的方式。
您可以在XML中包含<片段>,以将片段实例嵌入布局中。
我可以建议为您的片段创建一个全新的布局,而不要使用<片段>。
编辑
创建一个单独的布局,然后将片段实例嵌入其中,例如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/nav_host_fragment_supervisor"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomNav"
android:layout_below="@+id/appbar"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_graph_supervisor" />
</FrameLayout>