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

Android Home Fragment首次启动无Bundle报错及传值失效问题

问题分析与解决方案

核心问题

  1. 发送参数的方式错误:你手动创建了Notlar实例并设置arguments,但Navigation组件调用navigate()时会自动创建目标Fragment的实例,你手动创建的那个实例根本不会被使用,导致设置的参数无效。
  2. 接收参数时的强制非空风险:requireArguments()会在Fragment无参数时抛出IllegalStateException,即便用try-catch捕获,也没必要——因为arguments本身是可空属性,直接判断即可。

修正步骤

1. 修复发送参数代码

删除手动创建Fragment和设置arguments的冗余代码,直接通过navigate()传递Bundle:

// 修正后的发送代码
val bundle = Bundle()
bundle.putInt("categoryId", -99)
findNavController().navigate(R.id.action_kategoriler_to_notlar, bundle)

2. 修复接收参数代码

放弃requireArguments(),改用可空的arguments结合默认值处理首次启动无参数的场景,无需try-catch:

// 修正后的接收代码
categoryIdBundle = arguments?.getInt("categoryId", -1) ?: -1
  • arguments?.getInt(...):安全调用,当无参数时返回null
  • ?: -1:当前面结果为null时,使用默认值-1,完美覆盖首次启动的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:26