Android Studio中在主Activity实例化需Context与AttributeSet的自定义类
解决方案
你如果是纯代码动态创建DrawingCanvas实例、不需要从XML布局加载预设属性的话,AttributeSet参数直接传null即可,写法如下:
DrawingCanvas drawingCanvas = new DrawingCanvas(this, null);
相关说明
AttributeSet本质是XML布局中声明的View属性的集合,只有系统从XML解析创建View时,才会自动生成对应实例传入构造函数。手动创建时没有需要解析的XML属性,传null是完全合法的用法,不会出现异常。- 实例创建完成后,你可以通过
setLayoutParams()、setBackgroundColor()等方法手动设置View的布局参数和样式。 - 如果你后续经常需要动态创建该自定义View,建议在
DrawingCanvas类中补充重载构造函数,简化调用逻辑:
补充后你就可以直接用// 适配纯代码创建场景的单参数构造 public DrawingCanvas(Context context) { this(context, null); }DrawingCanvas drawingCanvas = new DrawingCanvas(this);的写法实例化,不需要再传入第二个参数。
内容的提问来源于stack exchange,提问作者Pauline
相关产品推荐
相关产品推荐

