如何使用适合构建版本的自定义视图构造函数?

时间:2016-12-13 17:47:32

标签: java android

我刚刚创建了自定义视图组的基本实现,构造函数看起来像这样:

 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必须是我调用的第一行,每次运行它我的应用程序都会崩溃。

0 个答案:

没有答案