导航图 hos in multi activity
Navigation graph hos in multi activity
我是使用导航组件的新手,我有 2 个 activity 每个都有 3 个片段,我应该为每个 activity 创建一个导航主机图,或者有一种方法可以只使用一个导航图进行 2 项活动?
您可以使用 Intent 从 Activity 1 移动到 Activity 2。
每个 Activity 都需要自己的 NavGraph 来承载 3 个片段并在其中导航。因此,您将使用 Navigation Component 在主机 Activity.
中从一个片段移动到另一个片段
如果您的架构允许,您也可以决定只使用一个 Activity。
For Navigation components with multiple-activities,您不应使用 Intents 启动活动,相反,您需要将活动作为目的地添加到 nav_graph
。
Should I create for each activity a navigation host graph or there are a way to use only one nav graph for 2 activities ?
是的,对于 n 个活动,您应该有 n 个或更少的导航图(以防您需要进行一些不涉及导航的活动,如正常活动)
因此,在您的情况下,您有 2 个活动,那么您应该有 nav_grap1 & nav_grap2。
假设您需要从 activity1、fragment1 移动到 activity2,那么您需要做的是:
- 在
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 时,只需使用 navigationController 的不同
navigate()
方法即可;例如:
findNavController().navigate(R.id.action_fragment1_1_to_secondActivity)
更多信息check documentation, and check
我是使用导航组件的新手,我有 2 个 activity 每个都有 3 个片段,我应该为每个 activity 创建一个导航主机图,或者有一种方法可以只使用一个导航图进行 2 项活动?
您可以使用 Intent 从 Activity 1 移动到 Activity 2。
每个 Activity 都需要自己的 NavGraph 来承载 3 个片段并在其中导航。因此,您将使用 Navigation Component 在主机 Activity.
中从一个片段移动到另一个片段如果您的架构允许,您也可以决定只使用一个 Activity。
For Navigation components with multiple-activities,您不应使用 Intents 启动活动,相反,您需要将活动作为目的地添加到 nav_graph
。
Should I create for each activity a navigation host graph or there are a way to use only one nav graph for 2 activities ?
是的,对于 n 个活动,您应该有 n 个或更少的导航图(以防您需要进行一些不涉及导航的活动,如正常活动)
因此,在您的情况下,您有 2 个活动,那么您应该有 nav_grap1 & nav_grap2。
假设您需要从 activity1、fragment1 移动到 activity2,那么您需要做的是:
- 在
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 时,只需使用 navigationController 的不同
navigate()
方法即可;例如:
findNavController().navigate(R.id.action_fragment1_1_to_secondActivity)
更多信息check documentation, and check