为Android棒棒糖构建自定义视图,该视图';s向后兼容(代码重复很少)
我想为Android-L构建一个支持四参数构造函数的自定义视图:为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
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) {
// ...
}