导航图包含在多个活动中



我是使用导航组件的新手,我有2个活动,每个活动有3个片段,我应该为每个活动创建一个导航主机图,还是有一种方法只能使用一个导航图用于2个活动?

对于具有多个活动的导航组件,您不应该使用intent启动活动,相反,您需要将活动作为目的地添加到nav_graph

我应该为每个活动创建一个导航主机图还是有一种方法可以为两个活动只使用一个导航图?

是的,你应该,对于n个活动,你应该有n个导航图,或者更少(如果你需要让一些活动像正常活动一样,不涉及导航)

在你的例子中,你有两个活动,那么你应该有nav_graph1 &nav_grap2 .

假设您需要从活动1,fragment1移动到活动2,那么您需要做的是:

  • nav_graph1中添加<activity2>作为目的地
  • nav_graph1中创建从fragment1到activity2的动作

activity1的导航图应该看起来像:

<?xml version="1.0" encoding="utf-8"?>
<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/navigation"
app:startDestination="@id/fragment1_1">
<fragment
android:id="@+id/fragment1_1"
android:name="com.example.android.xx.Fragment1_1"
android:label="Fragment1_1" >
<action
android:id="@+id/action_fragment1_1_to_secondActivity"
app:destination="@id/secondActivity" />
</fragment>
<fragment
android:id="@+id/fragment1_2"
android:name="com.example.android.xx.Fragment1_2"
android:label="Fragment1_2" />
<activity
android:id="@+id/secondActivity"
android:name="com.example.android.xx.SecondActivity"
android:label="SecondActivity" />
</navigation>
  • 每当你想移动到activity2,然后只使用不同的navigate()方法的navigationController;例如:
findNavController().navigate(R.id.action_fragment1_1_to_secondActivity)

有关更多信息,请查看文档,并检查此问题

你可以使用Intent从Activity 1移动到Activity 2。

每个Activity都需要自己的NavGraph来承载和导航3个fragment。所以你将使用导航组件从一个片段移动到另一个宿主活动。

如果您的架构允许,您也可以决定只使用一个活动。

最新更新