Android中的Jetpack导航组件

Android中的Jetpack导航组件

Android Jetpack包含一组库 & 组件构建一个完美的应用程序,导航组件是其中的一部分. Let’s learn about Android导航组件 以及如何与导航组件集成. 导航组件通过定义导航目的地和操作的图来工作. 它提供了一组api和工具,可以定义和管理应用程序屏幕或目的地之间的导航路径. 该库提供了许多好处,包括

  1. 它自动处理片段事务
  2.  在导航时,传递信息时需要类型安全
  3. 导航UI模式,如底部导航 & 以最小的工作量实现导航抽屉.
  4. 动画和过渡都有默认行为
  5. 深度链接是一流的操作
  6. 默认情况下处理Up和back操作

Also Read: 是什么让Android即时应用如此受欢迎?

Overview

导航组件有三个模块:

  1. Navigation graph – It’s an XML resource; it is having all the navigation related data/information in one centralised place. 
  2. NavHostFragment -这个重要的小部件,你必须添加到你的布局. 它将显示不同于导航图的目的地.
  3. NavController——这个在NavHost中管理应用程序的导航,并跟踪导航图中的当前位置.   

Integration

只需在模块级构建的依赖项中添加以下代码.gradle file.

def nav_version = "2.2.2"

// Java语言实现
实现“androidx.导航:navigation-fragment: $ nav_version”

实现“androidx.导航:导航ui: $ nav_version”

// Kotlin
实现“androidx.导航:navigation-fragment-ktx: $ nav_version”
实现“androidx.导航:navigation-ui-ktx: $ nav_version”

Navigation Graph

首先,我们需要创建一个包含导航图的文件. 在res目录中执行以下步骤: 

这将用nav_graph创建一个空白的资源文件.导航目录中的XML文件名.

For an example, 这里我们创建了一个示例应用程序,其中包含两个不同的片段,分别名为FirstFragment和SecondFragment. 当单击FirstFragment按钮时,它将引导您到SecondFragment.

我们在下面的导航图中定义了片段.


    
Jetpack导航组件在Android -登录过程

NavigationHost

可以将NavHost设想为一个可以设计屏幕的空间, 在NavController的帮助下, 您可以在NavHost内的不同屏幕之间移动.

NavHost中的每个屏幕都链接到一个特定的路由, 哪个可以在屏幕之间导航. 下面是一个NavHost的示例:

val navController = memorbernavcontroller ()
NavHost(
        navController = navController;
        startDestination = "first_screen"
) {
    可组合(“first_screen”){
        // first screen
    }
    可组合(“second_screen”){
        // second screen
    }
}

这里根标签命名为navigation, 有app:startDestination参数包含第一个片段的id.

这个定义了在NavHostFragment中,第一个片段将被自动加载.

我们已经为第一个片段定义了一个动作,属性如下:

android: id =“@ + id / nav_first_fragment”
应用:目的地= " @ id / nav_second_fragment”

在每个操作中都应该有一个唯一的id,我们需要它来导航到目的地.

我们在导航图中定义了app:destination中第二个片段的id,并使用此操作将导航到第二个片段.

完成这些步骤后,切换到nav_graph中的design选项卡.Xml,它应该看起来像下面给出的图表.

Read More: Kotlin for Android

Navigation types

我们有多种方式来导航使用导航组件

  1. 使用目的地Id导航 
    对于导航,我们可以像下面这样提供目的地片段的if.
    button.setOnClickListener
    {
    findNavController().navigate(R.id.nav_second_fragment)
    }
  2. ClickListener
    对于视图,我们可以使用createNavigateOnClickListener()方法,如下所示
    button.setOnClickListener(导航.createNavigateOnClickListener(右.id.nav_second_fragment, null))
  3. 使用操作导航
    我们可以在上图的第一个片段中使用已定义动作的id,如下所示
    button.setOnClickListener {
     findNavController().navigate(R.id.action_first_to_second)
    }

我们所需要做的就是定义NavHostFragment,这个小部件将显示我们在导航图中定义的不同目的地. 加载FirstFragment, 我们需要复制下面给出的代码,并粘贴在活动的布局.


android: name = " androidx.navigation.fragment.NavHostFragment" 定义由NavController使用的NavHostFragment

应用:defaultNavHost = " true " 被称为NavHost,拦截和工作作为后退按钮.

应用:navGraph = " @navigation / app_navigation” 将NavHostFragment与导航图关联. 在这个NavHostFragment中,导航图指定了我们可以导航到的所有目的地.

When you run the app, FirstFragment将自动加载并点击按钮, 它将重定向到SecondFragment. 当按下从SecondFragment返回按钮时,您将被重定向回FirstFragment.

以上就是,希望您对导航体系结构组件有了一定的了解.

Also Check: 革命性的移动应用程序开发与Kotlin多平台

Final Words

您是否正在与导航架构组件作斗争? 您来对地方了,我们为广大行业提供服务 Android应用开发解决方案. 与我们联系,从我们的 seasoned developers.

Android,移动应用开发
,

Leave a Reply

您的电子邮件地址将不会被公布. 必填项被标记 *

Specially Thank you! for visiting.

你脑子里的任何计划?

Contact us 或打电话给我们获得免费的估计