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
相关产品推荐
相关产品推荐

