我刚刚创建了自定义视图组的基本实现,构造函数看起来像这样:
public cardLayout(Context context) {
this(context, null,0,0);
}
public cardLayout(Context context, AttributeSet attrs) {
this(context, attrs,0,0);
}
public cardLayout(Context context, AttributeSet attrs, int defStyleAttr) {
this(context,attrs,defStyleAttr,0);
}
public cardLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context,attrs,defStyleAttr,defStyleRes);
}
这是我的问题发挥作用的地方。基本上,第4个构造函数适用于api版本21及更高版本。因此,当api低于版本21运行时,我的程序将崩溃,因为所有其他构造函数都指向版本21构造函数。无论如何我能解决这个问题吗?
注意:我确实尝试使用if (Build.Version.SDK_INT >= Build.Version_Code.Lollipop)
来检查构建版本是否高于棒棒糖。如果是,那么执行构造函数super(context,attrs,defStyleAttr,defStyleRes)
,如果不是,则执行super(context,attrs,defStyleAttr)
。然而,android studio继续给我一个错误,说super必须是我调用的第一行,每次运行它我的应用程序都会崩溃。