对话框片段包始终为空

Posted

技术标签:

【中文标题】对话框片段包始终为空【英文标题】:Dialog Fragment Bundle always null 【发布时间】:2021-05-25 17:36:57 【问题描述】:

我只想将数据从 Fragment 发送到 DialogFragment。在片段中;

 val fm = requireActivity().supportFragmentManager
            val dialog = DialogFragmentName()
            val arg :Bundle? =null
            arg?.putInt("num",75)
            dialog.arguments = arg
            dialog.show(fm,"TAG")

在 DialogFragment 中;

 val bundle :Bundle? = arguments
    if (bundle != null) 
        val number: Int? = bundle.getInt("num")
        Toast.makeText(context,number,Toast.LENGTH_LONG).show()
     else 
        Toast.makeText(context,"Null",Toast.LENGTH_LONG).show()
    

但它总是给我 Null

【问题讨论】:

【参考方案1】:

您忘记初始化您的Bundle,它被设置为null 并尝试将数据添加到null 引用安全失败,因为?. 运算符最终发送空Bundle

val fm = requireActivity().supportFragmentManager
val dialog = DialogFragmentName().apply
      arguments = Bundle().apply
          putInt("num",75)
      
  
dialog.show(fm,"TAG")

【讨论】:

以上是关于对话框片段包始终为空的主要内容,如果未能解决你的问题,请参考以下文章

片段内的视图坐标始终为空

使用 ViewModel 和 LiveData 递增变量的简单片段示例 - 变量始终为空

片段对话框中的片段膨胀引发错误“片段未创建视图”

关闭从另一个对话框片段启动的对话框片段会导致非法状态异常

从片段显示对话框?

片段未与片段管理器关联。 (对话片段)