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

DataBinding绑定的数据未在视图显示且无报错问题排查咨询

问题原因

你在XML中声明了绑定变量data指向当前Fragment实例,但代码中创建DataBinding实例后,没有将Fragment实例赋值给binding对应的变量,导致XML无法读取到你定义的title字段值。同时缺少生命周期所有者绑定,后续如果使用可观察数据也会出现不更新的问题。

解决方案

修改WritingRoutineFragment的onCreateView方法,补充变量赋值和生命周期绑定即可:

override fun onCreateView(inflater: LayoutInflater,
                          container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_writing_routine, container,false)
    // 补充下面两行代码
    binding.data = this // 将当前Fragment实例传给XML声明的data变量
    binding.lifecycleOwner = viewLifecycleOwner // 绑定生命周期,保证后续数据变更能正常通知UI
    return binding.root
}

可选优化(推荐)

你当前的title是普通Kotlin字段,只有在绑定赋值那一刻的值会被读取,后续如果title发生变更,UI不会自动更新。你可以将title修改为可观察类型,实现数据变更自动同步UI:

// 把原来的var title: String? = null 替换为下面的代码
val title = MutableLiveData<String>()

// onCreate里赋值的时候改成
arguments?.apply {
    titleData = getStringArrayList("title")
    title.postValue(titleData?.joinToString(" / "))
}

XML不需要修改,DataBinding会自动处理LiveData类型的取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:36:10