今天在写自定义QQ气泡效果view时,发现代码没有执行4参构造方法。困惑了很久,发现构造方法调用了系统的,需要修改下。
//错误代码
public class T extends View { public T(Context context) { super(context); } public T(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public T(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public T(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } }
//正确代码
public class T extends View { public T(Context context) { this(context,null); } public T(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public T(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } public T(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } }
//打断点 代码先执行两参构造方法,再执行三参构造方法,再执行四参构造方法。