You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android使用SafeArgs跨模块跳转Activity报参数过多错误如何解决

错误原因

SafeArgs 生成导航方法时仅读取当前导航图内直接关联的参数定义。你当前 app 模块的导航图既没有引入 Library 模块的公共导航图,也没有在跳转 Action 中声明需要传递的参数,因此生成的 actionFragmentAToDetailActivity() 默认为无参方法,传入两个参数自然会触发编译错误。

解决步骤

  • 步骤1:修改 app 模块的 nav_graph_app.xml,在跳转 Action 中声明和 DetailActivity 匹配的参数
<action
    android:id="@+id/action_fragmentA_to_DetailActivity"
    app:destination="@id/detail_activity">
    <!-- 新增参数声明,和Library中DetailActivity的参数完全一致 -->
    <argument
        android:name="id"
        app:argType="string" />
    <argument
        android:name="name"
        app:argType="string" />
</action>
  • 步骤2:确认所有模块都已正确配置 SafeArgs
    项目根目录 build.gradle 已引入 SafeArgs 插件依赖,app 模块和 Library 模块的 build.gradle 都已应用对应 SafeArgs 插件(Kotlin 项目请使用 androidx.navigation.safeargs.kotlin 版本)。
  • 步骤3:清理缓存重新构建
    执行 Android Studio 菜单栏 Build → Clean Project,再执行 Rebuild Project,触发 SafeArgs 重新生成带参数的导航方法。

可选优化方案

如果后续还有多个页面需要跳转到 Library 中的公共页面,推荐直接在 app 导航图中引入整个公共导航图,避免重复声明参数:

<!-- 在nav_graph_app.xml的navigation根节点内新增引入配置 -->
<include app:graph="@navigation/nav_graph_common_component" />

引入后可直接导航到公共导航图的任意目标,自动复用已定义的参数配置。

内容的提问来源于stack exchange,提问作者abhishek kumar gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:24:05