Android双向数据绑定中绑定的Pojo对象为null问题排查
关于ViewBinding中
binding.data为null的疑问 问题描述
我遇到两个困惑:
- 当
binding.tv1和binding.et1均不为null时,为何binding.data(对应自定义Pojo对象)始终返回null? - 若取消Kotlin类中16、17行的注释,改用
loginInfo.data替代binding.data就能正常运行,为什么未手动初始化时无法直接使用binding.data?
相关文件:
- 布局文件:
activity_login.xml - 数据实体类:自定义Pojo类
- 逻辑代码类:对应的Kotlin Activity类
问题解答
1. binding.data为null的原因
ViewBinding的核心作用是绑定布局中的View控件,像tv1、et1这类在XML里定义的TextView、EditText,Binding类会自动完成实例化并关联到对应的属性上。但data是你自己定义的业务数据对象,不属于布局中的View元素,Binding类不会自动为它创建实例,所以默认就是null——这和View控件能被正常绑定完全是两码事,控件是布局里存在的元素,Binding会处理,而自定义业务对象不在Binding的职责范围内。
2. loginInfo.data可用但binding.data不行的原因
你注释掉的16、17行代码,是在手动初始化loginInfo.data,也就是给这个Pojo对象分配内存、创建实际的实例。而binding.data只是Binding类中被声明但从未被赋值的变量,没有实际的对象实例,自然是null,无法直接调用它的方法。loginInfo.data是你主动创建的有效实例,所以能正常使用。
总结来说:ViewBinding只负责布局View的绑定与实例化,自定义的业务数据对象必须由你手动初始化,Binding不会自动处理这类对象的创建。
内容的提问来源于stack exchange,提问作者Nikhil Reddy
相关产品推荐
相关产品推荐

