首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android导航组件中使用Kotlin包含嵌套导航图

在Android导航组件中使用Kotlin包含嵌套导航图,可以通过以下步骤实现:

  1. 首先,在项目的build.gradle文件中添加导航组件的依赖:
代码语言:txt
复制
implementation "androidx.navigation:navigation-fragment-ktx:2.4.0"
implementation "androidx.navigation:navigation-ui-ktx:2.4.0"
  1. 创建一个主导航图和一个嵌套导航图。主导航图用于整体的应用导航,而嵌套导航图用于特定功能模块的导航。
  2. 在主导航图的目的地中添加一个NavHostFragment,用于承载嵌套导航图:
代码语言:txt
复制
<fragment
    android:id="@+id/mainNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/main_navigation" />
  1. 在主导航图的目的地中添加一个NavHostFragment的容器,用于承载嵌套导航图的目的地:
代码语言:txt
复制
<FrameLayout
    android:id="@+id/nestedNavHostFragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 在主导航图的目的地中,通过app:defaultNavHost="true"属性将嵌套导航图的导航事件传递给嵌套导航图的NavHostFragment
代码语言:txt
复制
<fragment
    android:id="@+id/nestedNavHostFragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nested_navigation" />
  1. 在代码中,通过findNavController()方法获取主导航图和嵌套导航图的NavController对象,并进行导航操作:
代码语言:txt
复制
val mainNavController = findNavController(R.id.mainNavHostFragment)
val nestedNavController = findNavController(R.id.nestedNavHostFragment)

// 在主导航图中进行导航
mainNavController.navigate(R.id.destination)

// 在嵌套导航图中进行导航
nestedNavController.navigate(R.id.nestedDestination)

这样,就可以在Android导航组件中使用Kotlin包含嵌套导航图了。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议在腾讯云官方网站或文档中查找相关产品和介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

知识点 | ViewModel 四种集成方式

是购买支付流程: △ 包含一些购买支付流程的导航图 (Navigation Graph) 这四个页面需要共享一些诸如收货地址、是否使用了优惠券等信息。...在使用时,您需要先把一个界面集合 (例如: 登录流程、支付流程的相关界面),放到一个嵌套导航图 (nested navigation graph) 。...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件的 id,在这里是...Checkout ViewModel } 复制代码 需要注意的是,嵌套导航图相对于导航图的其他部分是一个独立的整体。...您无法导航嵌套导航图包含的某个特定界面;当您导航至一个嵌套导航图时,打开的只会是其中的开始界面 (startDestination)。

2.5K20

知识点 | ViewModel 四种集成方式

: △ 包含一些购买支付流程的导航图 (Navigation Graph) 这四个页面需要共享一些诸如收货地址、是否使用了优惠券等信息。...在使用时,您需要先把一个界面集合 (例如: 登录流程、支付流程的相关界面),放到一个嵌套导航图 (nested navigation graph) 。...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件的 id,在这里是...Checkout ViewModel } 需要注意的是,嵌套导航图相对于导航图的其他部分是一个独立的整体。...您无法导航嵌套导航图包含的某个特定界面;当您导航至一个嵌套导航图时,打开的只会是其中的开始界面 (startDestination)。

34520
  • 导航: 嵌套导航图和 | MAD Skills

    这是第二个关于导航 (Navigation) 的 MAD Skills 系列,本文是导航组件系列的第三篇文章,如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 在应用中导航使用...在本文中,我们将了解如何通过使用嵌套图管理导航图,并且使用 include 标签来引入其他图。这就需要我们将应用模块化,并且了解导航何在模块间实现操作。...那么,接下来,让我们打开 Android Studio 开始学习如何在模块上使用导航吧。 嵌套导航图 我们从导航图开始。嵌套图允许您在父导航图中将一系列目的地页面分组。...嵌套图必须包含 id。您可以使用这个 id 实现导航嵌套图的代码,但并不是直接转换到其子目的地页面。嵌套包含自己的启动目的地页面,并且请不要分开暴露它们的子目的地页面。...总结 在本文中,我们了解了如何创建嵌套导航图,以及如何使用 include 标签来模块化甜甜圈记录应用。 在下一篇文章,我们会更进一步学习如何使用功能模块进行导航。敬请关注!

    1.6K30

    谷歌官方组件Navigation你会用了吗?

    转载请注明出处 [https://www.jianshu.com/p/b8307429e905 ] 上一篇文章我们介绍了谷歌官方组件Navigation的使用谷歌官方组件Navigation你了解了吗?...implementation "android.arch.navigation:navigation-ui:$nav_version" // use -ktx for Kotlin } 创建导航图 导航是发生在应用的目标示图之间...如果我们是第一次创建导航图Android Studio会在res文件夹下面创建一个navigation 的资源文件目录,这个目录当中就包含了我们刚才创建的资源文件。如图: ?...控制面板分成了三部分分别是: Destinations panel(目标面板):列出当前导航的主机以及当前图解编辑器当中的所有目的地。 Graph Editor(图解编辑器): 这里包含导航图的。...的应用程序导航的对象。

    1.1K10

    在功能模块中使用导航 | MAD Skills

    这是关于导航 (Navigation) 的第二个 MAD Skills 系列,本文是导航组件系列的第四篇文章,如果您想回顾过去发布的内容,请通过下面链接查看: 导航组件概览 导航到对话框 在应用中导航使用...SafeArgs 使用深层链接导航 打造您的首个 app bundle 深入浅出 NavigationUI 使用导航组件: 条件导航 导航: 嵌套导航图和 如果您更倾向于观看视频而非阅读文章,请 点击这里...概述 在 上一篇文章 ,您已经学会了如何在多模块工程中使用导航 (Navigation)。在本文中,我们将更进一步,将咖啡模块转换成功能模块 (Feature Module)。...为了提供更好的用户体验,首先我使用导航添加了 NavigationUI 以集成 UI 组件。然后,我实现了一次性流程和条件导航。...之后,我使用嵌套图和 include 标签来组织导航图并将应用模块化以节省用户的网络和存储空间。至此,我们已经完成了该应用,是时候去享用一杯美味的咖啡和甜甜圈了!

    55410

    使用导航组件: 对话框目的地 | MAD Skills

    概览 在本系列的 上一篇文章 ,我大致介绍了导航组件以及如何使用导航图。 在这篇文章,我会介绍如何使用 API 来导航到对话框目的地 (dialog destination)。...在 main 包创建一个新的 Kotlin 文件并命名为 MyDialog.kt。...我会带您浏览关键的实现步骤,大家可以看到我是如何使用对话框目的地导航的。 首先,这是应用的导航图: ?...在 DonutTracker 的导航图中有两个目的地 您会发现主页目的地依然存在,只不过叫做 donutList。这是那个包含甜甜圈列表 (使用 RecyclerView) 的 fragment。...更多信息 更多关于导航组件的详情,请查看 导航组件使用入门文档 DonutTracker 应用的完整代码,请查看 Github 示例 更多 MAD Skills 系列内容,请查看 Android Developers

    1.4K30

    Jetpack组件之Navigation

    首语 Android开发中流行单个Activity嵌套多个Fragment的UI架构模式,但是对Fragment的管理比较麻烦。...优点 可视化的页面导航图,可以使用 Android Studio 的 Navigation Editor 来查看和编辑导航图。 通过destination和action完成页面间的导航。...这是一个 Java/Kotlin 对象,用于在代码完成 Navigation Graph 具体的页面切换工作。...使用Toolbar时,Navigation组件会自动处理导航按钮的点击事件,因此无需覆盖onSupportNavigateUp()。...如果该标记未设置,您仍会位于触发隐式深层链接时所在的上一个应用的任务堆栈。在这种情况下,如果按下返回按钮,您会返回到上一个应用;如果按下向上按钮,就会在导航图中的父级目的地上启动应用的任务。

    3K20

    360度无死角,Android Jetpack面试技巧大揭秘

    相对于传统Fragment事务,Navigation组件的优势在于: 导航图的可视化: 使用导航图直观展示应用导航流程,方便理解和修改。...类型安全: 利用Kotlin的类型安全特性,减少在导航时的错误。 生命周期感知: 自动处理Fragment的生命周期,避免了一些常见的生命周期相关问题。...核心组件: NavGraph(导航图): 包含应用中所有目的地和它们之间的导航关系。 NavController(导航控制器): 管理导航操作的控制器,负责管理与目的地的交互。...NavDestination(导航目的地): 表示导航图中的一个页面或操作,定义了目的地的属性和行为。...这三个核心组件共同构建了整个导航体系,使得在Android应用实现复杂的导航结构变得更加简单和可维护。

    22710

    为任意屏幕尺寸构建 Android 界面

    支持这一布局方式的一个简单方法是使用 SlidingPaneLayout,它的优势在于可以轻松复用现有的布局代码,以下是目前更新后的导航图: △ 更新后的导航图 我们可以通过 NavigationRailView...通过这种方式更新应用导航,无论屏幕尺寸如何都能够拥有相同的导航图,这意味着调整屏幕尺寸不会产生导航的变化,从而让用户感到困惑。.../navigation> 最后,再为 SlidingPaneLayout 专门添加一个新导航图,并在 TasksTwoPaneFragment Kotlin 代码处理 SlidingPaneLayoutNavController...再将 Navigation Rail 与包含应用中所有屏幕的主导航图并排放置: @Composable fun JetnewsApp() { val windowSize = rememberWindowSizeState...为了并排显示 Feed 和 Post,JetNews 简单地使用 Row 包裹两个组件,第一个组件具有固定宽度,第二个组件填充屏幕的其余部分。

    4.2K20

    深入浅出 NavigationUI | MAD Skills

    这是第二个关于导航 (Navigation) 的 MAD Skills 系列,如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 在应用中导航使用 SafeArgs 使用深层链接导航...在本文中,我们将为大家讲解另外一个用例,即类似操作栏 (Action Bar)、底部标签栏或者抽屉型导航栏之类的 UI 组件何在应用实现导航功能。...我需要在应用增加一些页面,所以有必要使用抽屉式导航栏或者底部标签栏来辅助用户导航。但是我们该如何使用这些 UI 组件来集成导航功能呢?通过点击监听器手动触发导航动作吗? 不需要!无需任何监听器。...之后我会用到这些目的页面的 id ;) △ 带有新的目的页面的导航图 更新导航图之后,我们可以开始将元素绑定起来,并且实现导航到 SelectionFragment。...这样,导航组件就可以将 MenuItem 与目的页面进行关联。

    3K30

    导航组件概览 | MAD Skills

    概览 本文会简要概述导航组件,包括如何创建一个带有导航能力的、已启用导航的 UI 中有关包含层级的细节的新应用,以及对于一些主要 API 和导航组件工作原理的解释。...导航组件介绍 导航组件包括了相关 API 和 Android Studio 的设计工具,其大大简化了您应用中导航流程的创建和编辑。以前没有导航组件的时候,应用导航任务是由我们手动编码实现的。...导航模板 自 3.6 版本后,Android Studio 包含了一个非常有用的新功能,这就是将导航整合到创建新应用的模板。...除此之外的其他一些模板也自带导航,不过我们暂时先使用这个模板。 这个模板会帮我们创建一个包含导航组件基础结构的应用。...我发现,观察 UI 的各个部分在包含层级的相互关系对于理解它们如何一起工作十分有帮助。为了查看这个部分,让我们来使用 Navigation Drawer Activity 模板创建另一个新工程。

    1.7K30

    Android Jetpack架构组件(五)之Navigation

    并且,纯代码的方式使用起来不是特别友好,并且Appbar在管理和使用的过程显得很混乱。...相比之前Fragment的管理需要借助FragmentManager和FragmentTransaction,使用Navigation组件有如下一些优点: 可视化的页面导航图,方便我们理清页面之间的关系...Navigation Graph:一个包含所有导航和页面关系相关的 XML资源。 NavHostFragment:一种特殊的Fragment,用于承载导航内容的容器。...二、Navigation使用 2.1 添加依赖 首先,新建一个Android项目,然后在build.gradle引入如下依赖脚本。...首先,在导航图中为destination添加标签,在app:uri属性填入的是你的网站的相应web页面地址,如下所示。

    1.4K00

    谷歌官方组件Navigation你了解了吗?

    以及Android Studio3.3的使用 在更新之后,其中还有一大亮点就是Navigation Editor(导航编辑器) Navigation 说到Navigation Editor我们就不得不先简单说一下...Navigation(导航) 什么是Navigation 在Android开发当中,导航是指允许用户再应用内进入和退出不同内容的交互组件。...而我们通过 Android Jetpack的导航组件可以帮助我们实现导航功能。导航组件还能可能遵循既定的原则来保证用户有一个良好的用户体检。...导航组件的构成 导航组件由三个关键的部分组成: Navigation graph(导航图): 这是一个包含所有位置导航相关信息的XML资源文件。...NavHost: 一个用于展示导航图当中目标视图的空的容器。Navigation组件包含一个实现NavHostFragment的默认的NavHost,它是用来展示fragment的目的地。

    1.1K00

    【详解】Android Jetpack 新组件之Navigation的用法和源码结构分析

    这次的Android Jetpack推出了五个新组件,它们分别是:Navigation(导航组件)、Paging(分页组件)、WorkManager(处理类似后台任务组件)、Slices(切片)、Android...>>>> Navigation详解 >>>> Navigation Graph 处理导航的跳转并且连接它们,存放在res目录下navigation目录,其实可以理解为导航图,结构如图: ?...ConfirmationFragmentArgs.fromBundle(getArguments()).getAmount(); tv.setText(amount + "") >>>> Navigation嵌套使用...("myarg") 注意: 根据官方文档说明,为了保证导航的正确使用,我们需要在目标的Activity重写onSupportNavigateUp,以确保导航器能够正确的回退栈。...一项新的技术出来,必然是为了解决某些问题或者实现一些新功能,我们应该勇于尝试和探索,并且学习它的精髓,同时提醒,kotlin已经应用到官方文档教程以及demo,并且Google做了KTX支持,所以kotlin

    2.2K40

    实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

    Google I/O 应用在主 Activity 中使用了两个不同的布局,其中包含了我们的人体工程学导航。...由于 Google I/O 应用使用了 Jetpack Navigation 实现不同界面之间的切换,这个挑战对导航图有怎样的影响,我们又该如何记录当前屏幕上的内容呢?...至于导航图,日程的目的地页面现在是双窗格 Fragment,而每个窗格可以展示的目的地都已经被迁移到新的导航图中了。...不过,我们不能直接从会议列表导航到会议详情,因为两者如今已经被放到了不同的窗格,也就是存在于不同的导航图里。...由于双窗格 Fragment 的各个目的页面已经不属于应用主导航图的一部分了,因此我们无法通过按设备上的后退按钮在窗格内自动向后导航,也就是说,我们需要实现这个功能。

    2.1K20

    动画实现更简单,Navigation Compose 帮您忙

    实验性 API 和语义化版本控制 实验性 API (任何在 Kotlin 领域使用 @RequiresOptIn 注解的 API) 可能随时会被更改。...对这些稳定的 API 进行破坏性变更需要增加主版本号 (,'2.0')。 这对向前和向后兼容很友好。...同时,我们可以使用 null 表示 "使用默认值"。这些默认值依次来自父导航图、父导航图的父导航图,一直向上到根 AnimatedNavHost。...如果您只想修改某个子图的默认值 (例如,您的登录子图中的页面总是使用横向滑动动画),您也可以在嵌套图级别设置动画: navigation( startDestination = "ask_username...我要感谢 Chris Banes 和所有投入时间在 Accompanist 上的开发者、Compose 背后的整个团队,以及大家帮助塑造 Android 开发的未来。

    1.9K20

    安卓开发_深入学习ViewPager控件

    ,对应显示导航图标(三个圆点) 效果图: 关键部分: 1、动态添加导航图标,并添加响应事件 1 //实例化导航图标 2 ImageView navImage... 6 linearLayout.addView(navImage,layoutParams); 7 //设置导航图片的点击事件 8...(参数position是当前ViewPager的子View的位置),即滑动ViewPager 根据当前界面View的位置设置对应导航图标哪个位置的圆点亮 1 2 public void...子控件使用的布局参数对象,用来设置子空间的大小,边距等属性 33 private LinearLayout.LayoutParams layoutParams; 34 //存放导航图标的线性布局...全部都要v4包,因为Fragment和ViewPager共同使用的适配器 为v4包下的,需要实现包统一 注意FragmentStatePagerAdapter 适配器和 FragmentPagerAdapter

    2K80

    Navigation的用法

    纯代码的方式使用起来不是特别友好,并且Fragment和App bar在管理和使用的过程显得很混乱。   ...三.如何使用Navigation   使用Navigation组件前,先要添加以下依赖:   implementation "androidx.navigation:navigation-fragment...5.使用NavController完成导航       经过以上的步骤后,我们还需要通过NavController对象,在代码完成具体的页面跳转工作,我们需要在MainFragment的布局文件添加一个...既然Navigation和App bar都需要处理页面切换事件,那么为了方便管理,Jetpack引入了NavigationUI组件,使App bar的按钮和菜单能够与导航图中的页面关联起来。   .../secondFragment" android:title="第二页面"/>   需要注意的是,item标签的id需要和导航图nav_graph.xmlSecondFragment

    27920
    领券