Android 导航组件 - 在包含的模块图之间导航

Posted

技术标签:

【中文标题】Android 导航组件 - 在包含的模块图之间导航【英文标题】:Android navigation component - navigating between included graphs of modules 【发布时间】:2019-12-24 12:02:46 【问题描述】:

我有一个包含 3 个模块的单个活动应用程序 - applistdetail。我的活动在app 模块中,它托管了唯一的NavHostFragment。所有模块都有自己的导航图。 detail的起点需要一个长参数。 app 的图是其他图的父图:

<?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"
    android:id="@+id/nav_main"
    app:startDestination="@id/nav_list">

    <include app:graph="@navigation/nav_list" />
    <include app:graph="@navigation/nav_detail" />
</navigation>

但默认情况下,在编辑器上向包含的图表添加操作是禁用的:

我可以在 xml 文件中添加一个全局操作,然后显示在编辑器中:

<?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"
    android:id="@+id/nav_main"
    app:startDestination="@id/nav_list">

    <include app:graph="@navigation/nav_list" />
    <include app:graph="@navigation/nav_detail" />
    
    <action
        android:id="@+id/action_global_detailFragment"
        app:destination="@id/nav_detail" />
</navigation>

我不想使用全局操作,而是添加适当的 actions 来封装导航模式。嵌套图已经包含它们的导航逻辑,并且可能只需要输入作为入口点。我不确定这是否不受支持并且我遗漏了一些东西,否则为什么不呢?在两个或多个包含的图表之间导航的方式是什么?

【问题讨论】:

你有没有想过解决这个问题? 【参考方案1】:

您必须将android:id设置为您包含的图表,否则您无法添加操作。

【讨论】:

以上是关于Android 导航组件 - 在包含的模块图之间导航的主要内容,如果未能解决你的问题,请参考以下文章

使用导航组件在不同图形之间导航

如何保存底部导航片段的状态 - 具有单个导航图的 Android 导航组件

Android导航组件“向上按钮”打开抽屉导航

Android 导航架构组件:如何将捆绑数据传递给 startDestination

Android日志—Navigation

如何在两个片段之间传递位图? (我正在使用 Android 导航组件)