butterknife自定义view出错

butterknife是大家熟悉的一款view注入框架,这里就不多做介绍。
今天在一个自定义view的地方使用butterknife,设置点击按钮的时候发生的一个异常
代码如下:

public class Title extends RelativeLayout {
    @Bind(R.id.tv_title_right)
    TextView tvTitleRight;

    public Title(Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = LayoutInflater.from(context).inflate(R.layout.title, this);
    }

    public void setRightOnClick(OnClickListener click) {
        tvTitleRight.setOnClickListener(click);
    }
}

布局太简单就不贴出,异常如下:

ava.lang.RuntimeException: Unable to start activity ComponentInfo{com.mrsphoto.mrphoto/com.mrsphoto.mrphoto.activity.LiveActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void'android.widget.TextView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at android.app
…………………………………………省略…………………………………………
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

可以看到是在调用setOnClickListener这个方法的时候报了空指针异常,但是setRightOnClick里的tvTitleRight应该已经通过butterknife实例化过了,不应该是空值。于是检查一遍写法,使用Butterknife Zelezny重新生成了一下代码,然后clean。重新运行,还是会出现异常。
于是手动写了一遍findviewbyid:

  View view = LayoutInflater.from(context).inflate(R.layout.title, this);
        tvTitleRight= (TextView) view.findViewById(R.id.tv_title_right);

然后重新运行,终于正常运行。
看了一下官网的文档http://jakewharton.github.io/butterknife/并没有找到解决方法,如果有解决方法请指出。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值