AndroidJetpackNavigation基本使用本文主要介绍AndroidJetpack组件Navigation导航组件的基本使用。当你看到导航这个词时,你应该知道它是关于导航的。下面简单介绍一下Navigation组件的基本使用流程,一步步操作Navigation。下图是一个案例,实现登录到详情的跳转1.Navigation的基本概念Navigation是一个支持用户导航的Jetpack组件,在Android中用于在你的app中的“targets”之间导航,无论那个target是一个Fragment、活动或其他组件。导航组件由三个关键部分组成:导航图:一种XML资源,在一个集中位置包含所有与导航相关的信息。这包括应用程序中的所有单独内容区域(称为目的地)以及用户在应用程序中可能采用的路径。NavHost:在导航图中显示对象的空容器。导航组件包括显示片段目标的默认NavHost实现(NavHostFragment)。NavController:管理NavHost中应用程序导航的对象。当用户在整个应用程序中移动时,NavController会安排NavHost中目标内容的交换。简单点,我们直接操作体验一下Navigation的使用过程2导航入门2.1添加Navigation依赖简单点只需要设置navigation-fragment和navigation-ui依赖即可{defnav_version="2.4.2"//Java语言实现实现"androidx.navigation:navigation-fragment:$nav_version"实现"androidx.navigation:navigation-ui:$nav_version"//Kotlin实现"androidx.navigation:navigation-fragment-ktx:$nav_version"实现"androidx.navigation:navigation-ui-ktx:$nav_version"//功能模块支持实现"androidx.navigation:navigation-dynamic-features-fragment:$nav_version"//测试导航androidTestImplementation"androidx.navigation:navigation-testing:$nav_version"//JetpackComposeIntegrationimplementation"androidx.navigation:navigation-compose:$nav_version"}2.2创建导航图导航图是包含所有目的地和操作的资源文件。该图显示了应用程序的所有导航路径。将导航图添加到您的项目:在“项目”窗口中,右键单击res目录并选择“新建”>“Android资源文件”。显示“新建资源文件”对话框。在文件名字段中输入一个名称,例如“nav_graph”。从资源类型下拉列表中选择导航,然后单击确定。当您添加第一个导航图时,AndroidStudio会在res目录中创建一个导航资源目录。该目录包含您的导航图资源文件(例如nav_graph.xml)。创建完成后,res下会自动生成导航目录,里面存放的是上面新建的导航图。2.3在导航地图中添加目的地Fragment。单击上面的菜单+创建一个新的目的地。创建了两个新片段,一个是loginFragment,另一个是welcomeFragment。他们两个从loginFragment连接到welcomeFragment,会自动生成一个action。对了,loginFragment和welcomeFragment会稍微美化一下。2.4Activity添加NavHost导航宿主NavHost是Navigation组件的核心部分之一。导航主机是一个空容器,当用户在您的应用程序中导航时,目的地会在其中换入和换出。导航组件包含一个默认的NavHost实现(NavHostFragment下,在MainActivity中添加一个NavHostFragment,拖入Activity中,会自动显示可用的NavigationGraph导航图,也就是上面创建的my_nav_graph,选择它到2.5LoginFragment代码写navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);核心代码如下,获取输入的用户名和密码,用用户名导航到welcomeFragment。2.6WelcomeFragment代码写的很简单,获取传递的参数username即可inbyloginFragment并显示在TextView上。:通过getArguments()获取Bundle参数最终效果如下:总结本文主要简单介绍一下Navigation是什么以及使用过程,并结合实际案例。有Navigation还有很多其他的用途,比如条件导航、嵌套图、过渡动画等Functions可能会被再次操作。欢迎大家访问我的个人博客JohnnyHut
