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

Android Kotlin:如何处理从Bundle中接收空值的问题

解决Fragment Bundle读取可空字符串的空指针问题

你的错误根源是强制非空转换:arguments?.getString(KEY_CONTACT_P_NUM) as String 中,as String会强制把可空的String?转成非空String,一旦arguments为空或者对应key的值为空,就会抛出空指针异常。

下面是几种正确处理空值的方式:

1. 直接接收为可空类型

如果业务逻辑允许pNum为空,直接声明为String?类型即可,后续使用时通过?.安全调用或者?:处理空分支:

val pNum: String? = arguments?.getString(KEY_CONTACT_P_NUM)

2. 使用安全转换操作符

用as? String替代as String,它会在转换失败(即值为空)时返回null,不会崩溃:

val pNum = arguments?.getString(KEY_CONTACT_P_NUM) as? String

3. 给空值设置默认值

如果业务需要pNum必须是非空的,可以用Elvis操作符?:给空值指定默认值(比如空字符串):

val pNum: String = arguments?.getString(KEY_CONTACT_P_NUM) ?: ""

另外还要注意你newInstance方法里的笔误:方法参数是pNum,但bundleOf里传的是phoneNumber,这会导致参数根本没传对,修正后的代码:

companion object {
    private const val KEY_CONTACT_P_NUM = "contact_p_num"
    fun newInstance(pNum: String?): GITFragment {
        return GetInTouchResponseFragment().apply {
            arguments = bundleOf(KEY_CONTACT_P_NUM to pNum)
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:13