重写View的时候遇到inflate的错误

报错:

运行时报错: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)  这个构造函数就好啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值