报错:
运行时报错:android.view.InflateException 的错误
Ecplice 中说:Custom view MyTextView is not using the 2- or 3-argument View constructors; XML attributes will not work
解决方案:
添加构造方法:
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
Log.w(TAG, TAG);
}
两个都要写上。
刚看到
构造函数,View有三个构造函数:
public View (Context context) 当我们通过代码创建view时需要复写此方法。
public View (Context context, AttributeSet attrs) 当我们通过xml创建view时需要复写此方法。
public View (Context context, AttributeSet attrs, int defStyle) 通过源码我们可以知道其实public View (Context context, AttributeSet attrs) 调用的也是三个参数的构造函数public View (Context context, AttributeSet attrs, int defStyle)。我们一般不需要复写此构造函数。
难怪需要写public View (Context context, AttributeSet attrs) 这个构造函数,之前只写了public View (Context context),我只在XML中创建,所以只需要写public View (Context context, AttributeSet attrs) 这个构造函数就好啦