Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

Android Navigation 架构组件入门教程

Cavalier- 2019-02-25 11:27:00 阅读数:163 评论数:0 点赞数:0 收藏数:0

Android Navigation 架构组件入门教程

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载请表明出处:https://www.cnblogs.com/cavalier-/p/10429936.html

前言

Navigation组件是AndroidStudio3.2版本更新带来的新组件,其特点是在一个Activity中使用多个Fragment处理平滑用户操作,且可以统一进场,退场,弹出,隐藏动画,可视化处理Action,支持深层链接(不在同一个Activity时可以弹出跳转,底层是BroadcastReceiver),支持以少量代码连接底部导航或者连接ActionBar菜单或者连接Drawlayout的MenuItem,且导航时提供了类型安全(SafeArgs)。好处说了那么多,下面咱们来看看具体如何使用吧!

教程下载

教程github

你需要知道

关于Navigation你需要知道如下三个组件

这是Navigation的导航图,位于res/navigation/目录下的xml文件,
其有两个模式,Design(可视化设计模式)和Text(文字模式),在Design可视化环境下可以对整个Navigation做新建等操作,在Text模式下可进行代码声明,如下所示:

<fragment
android:id="@+id/home_dest"
android:name="com.example.android.codelabs.navigation.HomeFragment"
android:label="@string/home"
tools:layout="@layout/home_fragment">
<action
android:id="@+id/next_action"
app:destination="@+id/flow_step_one_dest"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
</fragment>

每个Navigation图都有一个起始的Fragment,这个Fragment将作为栈底(压栈,类似Activity的启动栈),其在布局文件中如下声明:

<fragment
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/my_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/nav_graph"
app:defaultNavHost="true"
/>
  • 这里面大家重点关注android:nameapp:defaultNavHost="true"是声明启动的Fragment为NavHostFragment
  • 下面的app:navGraph是将此fragment与Navigation graph做关联

NavController是一个跟踪Navigation graph当前位置的对象,主要协调NavHostFragment显示对应的Fragment,可通过NavController控制跳转逻辑,安全传参(SafeArgs后面讲解)

SafeArgs

使用SafeArgs需要导入Gradle插件(详情看注意事项第4点),在传值类型会自动生成对应类型的class,所以官方推介使用SafeArgs进行传参

实践过程

  1. 使用AndroidStudio 3.2以上版本
  2. 在AndroidStudio 中导入教程下载的实验项目,此过程等待时间长短依据你当前的网络环境
  3. 打开app\src\main\res\navigation\nav_graph文件(此文件就是上面提到的Navigation graph)
  4. 切换页面内,下面的编辑模式到Design模式,在里面找到一个绿色的+号New Destination,在弹出的窗口内选择SettingFragment,恭喜你目前已经掌握添加一个Fragment到Navigation Edit
  5. 接下来咱们切换到MainFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(MainFragment.this); navController.navigate(R.id.twoFragment);,这段代码意味着咱们从前面认识到的NavHostFragment中找到NavController,后面通过得到的NavController导航到ID叫R.id.twoFragment的目标
  6. 接下来咱们切换到TwoFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(TwoFragment.this); navController.navigate(R.id.mainFragment);,这段代码意味着咱们从前面认识到的NavHostFragment中找到NavController,后面通过得到的NavController导航到ID叫R.id.mainFragment的目标
  7. 运行项目
  8. 至此你已经初步掌握了Navigation的入门用法!

注意事项

  1. 运行环境必须是Android Studio3.2以上
  2. 最低运行在API14设备以上

引用

Navigation文档

版权声明
本文为[Cavalier-]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/cavalier-/p/10429936.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;

支付宝红包,每日可领