在今年的 IO 大会上,发布了一套叫 Android Jetpack 的程序库。Android Jetpack 里的组件大部分我们都接触过了,其中也有一些全新的组件,其中一个就是 Navigation。

简介

Navigation 是用来管理 APP 里页面跳转的。起初,我以为它是用来代替 startActivity 的,但其实并不是,大家往下看就知道它的作用了。

另外,iOS 的同学可能会有似曾相识的感觉,Navigation 应该是有借鉴 Storyboard 的。

使用

我们先来看看 Navigation 的实现过程。

添加依赖

首先,需要使用 Android Studio 3.2 以上版本才能使用 Navigation。

在 build.gradle 中添加依赖:

implementation "android.arch.navigation:navigation-fragment:$nav_version"implementation "android.arch.navigation:navigation-ui:$nav_version"

创建 navigation xml 文件

使用 「Android Resource File」创建 xml 文件的时候,可以看到在类型里,多了一个 Navigation 的选项:

创建成功后,就来到了文章开头的那个一个可视化的操作界面。点击左上角的添加小图标,会出现 Activity 和 Fragment,我们这里添加两个 Activity 和两个 Fragment:

配置 Action

Fragment 的右边有个小圆圈,点击并拖到另一个页面,这样我们就给这个 Fragment 添加了一个跳转行为,也就是 Action。

但是可以发现,Activity 的右边是没有这个小圆圈的,所以 Navigation 并不能处理从 Activity 发起的跳转。

左上角有个小房子的是显示的第一个页面,但由于 Activity 无法发起跳转,所以这里把 MainActivity 删除,把 MainFragment 作为主页面,并给它添加跳转到 SecondFragment 和 SecondActivity 的 Action:

自动生成的 xml 代码是这样的:

<?xml version="1.0" encoding="utf-8"?>                                

布局中添加 Fragment

现在,我们第一个页面是 MainFragment,而 Fragment 需要 Activity 作为容器,修改 MainActivity 的布局:

<?xml version="1.0" encoding="utf-8"?>    

其中有三个属性需要注意。使用 android:name 指定 Fragment 的类型为 NavHostFragment,使用 app:navGraph 指定 Navigation 文件。app:defaultNavHost=“true” 的作用是,让 Navigation 处理返回事件,点返回按钮时并不是返回上一个 Activity,而是返回上一个「页面」,上一个「页面」有可能是 Activity,也可能是 Fragment。

至此,Navigation 的简单配置就算完成了,接下来看如何使用它。

配置跳转

在 Navigation 里,页面的跳转是交给 NavController 来处理的,获取 NavController 的方法有这么三种:

NavHostFragment.findNavController(Fragment)Navigation.findNavController(Activity, @IdRes int viewId)Navigation.findNavController(View)

拿到后,通过 navigate 方法,通过传入 Action 的 id,实现跳转,比如:

NavHostFragment            .findNavController(this)            .navigate(R.id.action_firstFragment_to_secondFragment)

更多相关文章

  1. android仿京东商城项目
  2. Android使用Intent一键分享图片文字到腾讯、新浪、开心、微信等
  3. Android+Jquery Mobile学习系列-目录
  4. 重拾Android
  5. [置顶] Android中在界面上动态显示歌词
  6. Developing a Plugin on Android(安卓)只拣实用的。。。
  7. android页面或组件动画(比如淡出、3D翻转、进入......进入和退出
  8. Android使用setContentView实现页面的转换效果
  9. Android(安卓)WebView 与JS的数据交互

随机推荐

  1. 在Windows上搭建Android的JAVA开发环境图
  2. Android(安卓)3.0 r1中文API文档(103) —
  3. Android实现开机自启动无效问题
  4. android中上层是如何接收按键事件的
  5. android 短信发送学习
  6. U3D 发布 Android
  7. Android开机广播无法接收问题
  8. Android下pm 命令详解
  9. Android入门第九篇之AlertDialog
  10. windows 下 Android(安卓)NDK开发配置(win