背景:
自定义了一个View,运行时可以显示出来,但是在Activity中调用findViewById的结果却为null。定义View代码:
class BView (context: Context?) : View(context) {
constructor(context:Context?,attr: AttributeSet?):this(context){
}
constructor(context:Context?, attr: AttributeSet?, delStyle:Int?):this(context,null){
}
解决方法:
在写构造方法时,要在自定义View的构造方法中调用父类的构造方法,尤其是第二个构造方法,因为View在正常实例化时,调用的是第二种的构造方法。正确代码:
BezierView : View {
constructor(mContext: Context) : super(mContext) {
}
constructor(mContext: Context, mAttributeSet: AttributeSet) : super(mContext,mAttributeSet) {
}
constructor(context:Context,attr:AttributeSet,delStyle:Int):super(context,attr,delStyle){
}