官方架构组件Navigation管理Fragment框架

官方架构组件Navigation管理Fragment框架,第1张

概述Android官方推荐架构组件Navigation让单Activity应用成为首选架构,更好的管理Fragment框架Navigation目前仅AndroidStudio3.2以上版本支持,如果您的版本不足3.2,下载AndroidStudio3.2以上版本。快速开发组件可单独使用,也可以同时工作,当使用kotlin语言特性时,可以让你更有效率。

AndroID官方推荐架构组件Navigation 让单 Activity 应用成为首选架构,更好的管理Fragment框架

Navigation目前仅AndroIDStudio 3.2以上版本支持,如果您的版本不足3.2, 下载AndroIDStudio3.2以上版本。

快速开发 组件可单独使用,也可以同时工作,当使用kotlin语言特性时,可以让你更有效率。 消除样板 代码AndroID Jetpack管理乏味的活动,例如后台任务、导航和生命周期管理,你可以专注于让你的app更棒的东西。 构建高质量、健壮的app 基于现代设计实践,AndroID Jetpack组件可以减少崩溃和内存泄漏,且向后兼容。 Navigation 本文今天主要讲述Navigation的使用以及如何管理多个Fragment等

项目builde.gradle文件需配置:
implementation "androIDx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androIDx.navigation:navigation-ui-ktx:$nav_version"

1.创建MainActivity和布局文件activity_navigation: 布局里配置:

<com.Google.androID.material.bottomnavigation.BottomNavigationVIEw

androID: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? ?: return

  val navController = host.navController  val 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).setonClick@R_419_6818@ener( Navigation.createNavigateOnClick@R_419_6818@ener(R.ID.next_action) )

方法2: vIEw.findVIEwByID(R.ID.navigate_destination_button)?.setonClick@R_419_6818@ener { 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">

<fragment    androID: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 -->    <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><fragment    androID:ID="@+ID/flow_step_one_dest"    androID:name="com.my.navigation.FlowStepFragment"    tools:layout="@layout/flow_step_one_fragment">    <argument        androID:name="flowStepNumber"        app:argType="integer"        androID:defaultValue="1"/>    <action        androID:ID="@+ID/next_action"        app:destination="@+ID/flow_step_two_dest">    </action></fragment><fragment    androID:ID="@+ID/flow_step_two_dest"    androID:name="com.my.navigation.FlowStepFragment"    tools:layout="@layout/flow_step_two_fragment">    <argument        androID:name="flowStepNumber"        app:argType="integer"        androID:defaultValue="2"/>    <action        androID:ID="@+ID/next_action"        app:destination="@+ID/settings_dest">    </action></fragment><fragment    androID:ID="@+ID/settings_dest"    androID:name="com.my.navigation.SettingsFragment"    androID:label="@string/settings"    tools:layout="@layout/settings_fragment" >    <action        androID:ID="@+ID/next_action"        app:destination="@+ID/deeplink_dest">    </action></fragment><fragment    androID:ID="@+ID/deeplink_dest"    androID:name="com.my.navigation.DeeplinkFragment"    androID:label="@string/deeplink"    tools:layout="@layout/deeplink_fragment">    <argument        androID:name="myarg"        androID:defaultValue="AndroID!"/></fragment>

</navigation>

项目地址:https://github.com/Visen123/MyNavigation

总结

以上是内存溢出为你收集整理的官方架构组件Navigation管理Fragment框架全部内容,希望文章能够帮你解决官方架构组件Navigation管理Fragment框架所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1062920.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存