Android官方推荐架构组件Navigation 让单 Activity 应用成为首选架构,更好的管理Fragment框架Navigation目前仅AndroidStudio 3.2以上版本支持,如果您的版本不足3.2,下载AndroidStudio3.2以上版本 。官网下载地址:https://developer.android.google.cn/studio/
快速开发,组件可单独使用,也可以同时工作 。消除样板 ,让代码Android 架构Jetpack管理乏味的活动事件,比如后台任务、导航和生命周期管理 。这样你可以专注于让你的App更棒的东西,构建高质量、健壮的app 基于现代设计实践,Android Jetpack组件可以减少崩溃和内存泄漏,且向后兼容 。接下来讲述Navigation的使用以及如何管理多个Fragment等
项目builde.gradle文件需配置:
implementation "androidx.navigation:navigation-fragment-ktx:2.3.0-alpha05"
implementation "androidx.navigation:navigation-ui-ktx:2.3.0-alpha05"
1.创建MainActivity和布局文件activity_navigation布局里配置:
文章插图
activity_navigation.xml布局配置:
<fragmentandroid:id="@+id/my_nav_host_fragment"android:name="androidx.navigation.fragment.NavHostFragment"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"app:defaultNavHost="true"app:navGraph="@navigation/mobile_navigation" /> <com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottom_nav_view"android:layout_width="match_parent"android:layout_height="wrap_content"app:labelVisibilityMode="labeled"app:menu="@menu/bottom_nav_menu" />
MainActivity里配置:val host: NavHostFragment = supportFragmentManager.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment? ?: returnval navController = host.navControllerval bottomNav = findViewById<BottomNavigationView>(R.id.bottom_nav_view)bottomNav?.setupWithNavController(navController)
2、新建HomeFragment、FlowStepFragment、FlowStepFragment、SettingsFragment、DeepLinkFragment在Fragment片段里跳片段方法方法1: view.findViewById(R.id.navigate_destination_button).setOnClickListener( Navigation.createNavigateOnClickListener(R.id.next_action) )
方法2: view.findViewById(R.id.navigate_destination_button)?.setOnClickListener { findNavController().navigate(R.id.flow_step_one_dest, null, null) }
3、在res里新建文件夹navigation 类型选择Navigation,然后在这个文件夹里创建mobile_navigation.xml
在mobile_navigation.xml里写入要跳转的各个片段Fragment及要传递的参数: startDestination默认第一个跳的片段id destination跳到另外一个片段id action 隐式跳转 ,argType传递参数类型,defaultValue传递参数值
文章插图
文章插图
<?xml version="1.0" encoding="utf-8"?><navigation xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"app:startDestination="@+id/home_dest">
<fragmentandroid:id="@+id/home_dest"android:name="com.my.navigation.HomeFragment"android:label="@string/home"tools:layout="@layout/home_fragment"><!--todo destination隐式跳转到Fragement id=flow_step_one_dest --><actionandroid: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><fragmentandroid:id="@+id/flow_step_one_dest"android:name="com.my.navigation.FlowStepFragment"tools:layout="@layout/flow_step_one_fragment"><argumentandroid:name="flowStepNumber"app:argType="integer"android:defaultValue=https://www.isolves.com/it/cxkf/ydd/Android/2020-08-18/"1"/>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 微服务架构下分布式事务处理方案选择和对比
- IDE 最佳Android应用程序开发工具
- 系统架构设计工具—SystemArchitect
- 2 「系统架构」如何使用Dockerfile制作Docker容器?
- 英特尔发布新一代架构,IPC性能领先对手AMD25%!难道又是PPT?
- Android WebView 优化梳理
- 一个真实世界机器学习系统的架构
- Android 性能优化——内存优化
- 可视化架构设计——C4介绍
- 抢鲜!阿里架构师私藏并发编程笔记,公开前半段秒获8K标星