Databinding:setTag(java.lang.Object)‘ on a null object reference 问题处理。

当自定义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)

上一篇:mapstruct 运行时报了 java.lang.ClassNotFoundException:


下一篇:在Linux命令行提示符PS1中优雅地显示日期和时间