我想迁移我的项目以使用导航组件。 在我的活动中,有一个底部导航,该导航在同一Fragment的不同实例之间导航(带有不同的参数)。
Here解释了有关bottomNavigation支持的信息。 但是是否可以在同一导航图中以不同的ID和参数重用相同的Fragment?
我在Google文档中找不到方法。
答案 0 :(得分:3)
您应该能够使用多个目标定义nav_graph并重用相同的片段。像这样的东西
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_tab1">
<fragment
android:id="@+id/navigation_tab1"
android:name="com.myapp.MyFragment"
android:label="Tab1">
<action
android:id="@+id/action_goto_page1"
app:destination="@id/navigation_page1" />
<argument
android:name="tab1_arg1"
android:defaultValue="Default"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/navigation_tab2"
android:name="com.myapp.MyFragment"
android:label="Tab2">
<action
android:id="@+id/action_goto_page2"
app:destination="@id/navigation_page2" />
<argument
android:name="tab2_arg1"
android:defaultValue="Default"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/navigation_tab3"
android:name="com.myapp.MyFragment"
android:label="Tab3">
<action
android:id="@+id/action_goto_page3"
app:destination="@id/navigation_page3" />
<argument
android:name="tab3_arg1"
android:defaultValue="Default"
app:argType="string" />
</fragment>
</navigation>
但是,最好将您的代码重构为具有多个Fragment(每个都做一件事),以便更好地维护和清理代码。