为Android棒棒糖构建自定义视图,该视图';s向后兼容(代码重复很少)

为Android棒棒糖构建自定义视图,该视图';s向后兼容(代码重复很少),android,android-custom-view,custom-view,Android,Android Custom View,Custom View,我想为Android-L构建一个支持四参数构造函数的自定义视图: View(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) 理想情况下,调用超级构造函数,然后执行初始化工作: MyCustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, de

我想为Android-L构建一个支持四参数构造函数的自定义视图:

View(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
理想情况下,调用超级构造函数,然后执行初始化工作:

MyCustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes);

  // initialize lots of static members here
}
并将其他施工人员委托给该施工人员实施:

e、 g

问题是,这将在非L设备上失败,因为具有四个参数的超级构造函数不存在

因此,我目前的解决方法是实现三个和四个参数构造函数(主要是复制和粘贴)并使用它


有人看到了更优雅的解决方案吗?

创建如下方法:

private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    // ...
}

然后让每个构造函数调用带有所需参数的
init()
方法。

让一个方法包含所有初始化代码,并从四个构造函数调用它。这样,唯一重复的代码行就是方法的调用
private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    // ...
}