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

Android Navigation跳转报错:IllegalArgumentException找不到对应action/destination

问题核心原因

错误日志已经明确说明:你调用导航跳转时,NavController的当前目的地是jobsFragment,而你使用的action_privSectionFragment_to_privsDetailFragment是仅属于PrivSectionFragment的跳转动作,jobsFragment的导航配置中没有对应id的动作,因此抛出非法参数异常。

排查&解决步骤

1. 先确认页面加载逻辑

你提供的jobsFragment界面截图包含「私营部门」「政府部门」两个Tab,首先确认你切换到私营部门Tab时的逻辑:

  • 如果是直接在jobsFragment内嵌套加载PrivSectionFragment作为子Fragment,没有通过Navigation组件执行跳转动作,那么NavController的当前目的地会一直是jobsFragment,自然找不到对应动作。
    这种情况两种解决方式:
    • 方式一:给jobsFragment新增直达详情页的导航动作,在my_nav.xml的jobsFragment标签内添加如下配置:
      <action
          android:id="@+id/action_jobsFragment_to_privsDetailFragment"
          app:destination="@id/privsDetailFragment"
          app:enterAnim="@anim/nav_default_enter_anim"
          app:exitAnim="@anim/nav_default_exit_anim" />
      
      之后适配器跳转时直接调用JobsFragmentDirections.actionJobsFragmentToPrivsDetailFragment(priv_list[position])即可。
    • 方式二:修改Tab切换逻辑,切换到私营部门时通过Navigation组件执行action_jobsFragment_to_privSectionFragment2跳转,让PrivSectionFragment成为NavController的当前目的地。

2. 修正导航控制器获取方式

不要在RecyclerView适配器中通过itemView获取NavController,itemView属于父Fragment的视图树时,获取到的NavController会对应父页面。
推荐在PrivSectionFragment层处理跳转逻辑,给适配器设置点击回调:

// PrivSectionFragment 中初始化适配器
privListAdapter = PrivListAdapter(privList) { item ->
    val direction = PrivSectionFragmentDirections.actionPrivSectionFragmentToPrivsDetailFragment(item)
    findNavController().navigate(direction)
}

// 适配器代码中定义点击回调参数
class PrivListAdapter(val list: List<PrivListViewModel>, val onItemClick: (PrivListViewModel) -> Unit) : RecyclerView.Adapter<ViewHolder>() {
    // onBindViewHolder 中点击事件修改为
    PushDownAnim.setPushDownAnimTo(holder.card_view)
        .setOnClickListener {
            onItemClick(priv_list[position])
        }
}

3. 检查Safe Args生成状态

如果修改过导航图后没有重新构建项目,可能出现Safe Args生成的类和实际配置不匹配的问题,执行Clean Project -> Rebuild Project之后再测试。


内容的提问来源于stack exchange,提问作者Abood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:06