Navigation

2020-03-27  本文已影响0人  爱做梦的严重精神病患者

简介

navigation(导航)一般应用在一个主Activity和多个Fragment的情景中。在具有多个 Activity 目的地的应用中,每个 Activity 均拥有其自己的导航图。

导航组件由以下三个关键部分组成:

在应用中导航时,您告诉 NavController,您想沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。NavController 便会在 NavHost 中显示相应目标。

嵌套图表、全局操作

目的地之间传递数据

首先在接收参数的目的地中设置参数类型、名称:

<fragment
            android:id="@+id/firstFragment"
            android:name="com.futuring.jetpackdemo.FirstFragment"
            android:label="FirstFragment">
            <argument
                android:name="EMAIL"
                android:defaultValue="2005@qq.com"
                app:argType="string" />
            <action
                android:id="@+id/action_firstFragment_to_thirdFragment"
                app:destination="@id/thirdFragment" />
        </fragment>

  
之后在路径(action)中设置参数类型:

        <action
            android:id="@+id/action_mainFragment_to_navigation"
            app:destination="@id/firstFragment">

            <argument
                android:name="EMAIL"
                android:defaultValue="2005@qq.com"
                app:argType="string" />

        </action>

Safe Args

Navigation 组件具有一个名为 Safe Args 的 Gradle 插件,该插件可以生成简单的 object 和 builder 类,以便以类型安全的方式浏览和访问任何关联的参数。强烈建议将 Safe Args 用于导航和数据传递,因为它可以确保类型安全

启用Safe Args后,会自动生成一些代码。生成的代码会为每个源目的地、接收目的地以及每个操作,生成以下类型安全的类和方法。

MainFragmentDirections.ActionMainFragmentToNavigation action = MainFragmentDirections
                .actionMainFragmentToNavigation().setEMAIL("@qq.com");
上一篇下一篇

猜你喜欢

热点阅读