Android Fragments 如何处理从bundle接收null值

cgvd09ve  于 2023-10-19  发布在  Android
关注(0)|答案(2)|浏览(107)

嗨,我传递一个字符串到一个bundle中的一个片段,它可以是null,但我不确定当我从bundle参数中读取时如何接受null值

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 phoneNumber)
        }
    }
}

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

当我从参数中读取KEY_CONTACT_P_NUM时,我得到错误Fatal Exception: java.lang.NullPointerException null cannot be cast to non-null type kotlin.String
当我从参数中阅读时,如何接受空值
谢谢R

wpx232ag

wpx232ag1#

您应该删除最后一行中的as String部分。
getString()方法返回一个可为空的字符串(String?)。但是as String试图将其转换为非空字符串,这导致了异常。

okxuctiv

okxuctiv2#

除了@dev.bmax之外,要处理参数,您可以使用以下方法:

//Do something when the argument has value
requireArguments().getString(KEY_CONTACT_P_NUM)?.let { phoneNumber ->

}

//Assign an empty string when the argument is null
requireArguments().getString(KEY_CONTACT_P_NUM) ?: ""

相关问题