我正在view
中实施自定义Android
。我总是这样创造它,例如:
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.view1);
CustomView customView = new CustomView(relativeLayout.getContext());
relativeLayout.addView(customView);
这很好用。但是当我尝试不同的东西时:
CustomView customView = (CustomView) findViewById(R.id.customView);
在xml中它是这样的:
<com.my.package.CustomView
android:id="@+id/customView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
我收到了错误: android.view.InflateException:二进制XML文件行#14:错误导致类
我的自定义视图扩展了RelativeLayout
,这是唯一的构造函数:
public CustomView(Context c){
super(c);
//adding some html to the webview here
}
我错过了什么吗?
答案 0 :(得分:2)
从XML使用自定义视图时,不会使用单个参数构造函数。相反,将使用两个/三个参数构造函数。
您还应该添加其他构造函数:
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}