当自定义view使用databinding来赋值时,运行发现在BindingImpl类中报错:view.setTag(java.lang.Object)' on a null object reference。自定义view为null,分析猜测是由于自定义view的构造函数出了问题。经过反复测试发现,自定义view的四个构造函数必须重写,由于view源码中View(Context context)和View(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes)的实现方式不同,所以这两个构造方法重写后必须调用父类的构造函数,另外两个构造函数可以调用父类或者复用自己内部的其他构造函数。
//此构造函数必须调用父类的实现spuer()
View(Context context)
//此构造函数必须调用父类或复用子类的实现
View(Context context, @Nullable AttributeSet attrs)
//此构造函数必须调用父类或复用子类的实现
View(Context context, @Nullable AttributeSet attrs, int defStyleAttr)
//此构造函数必须调用父类的实现spuer()
View(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes)