我想为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。
MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
这个问题是在非L设备上会失败,因为没有四个参数的超级构造函数不存在。
所以,我目前的解决方法是实现三个和四个参数构造函数(主要是复制和粘贴)并使用它。
有人看到更优雅的解决方案吗?
答案 0 :(得分:1)
创建一个这样的方法:
private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// ...
}
然后让每个构造函数使用所需的参数调用init()
方法。