黄油刀不是在 AOSP 棉花糖中初始化视图,但在棒棒糖中工作正常



我在我的项目中使用了黄油刀库。当我在棒棒糖 AOSP 中构建时,它可以正常工作,但相同的代码不初始化任何内容,因此在该之后 NPE 被抛入棉花糖 AOSP。

这是代码:

public class ErrorLayoutViewHolder extends ViewHolder {
    @Bind(R.id.error_content_container)
    View errorContentLayout;
    @Bind(R.id.error_message)
    TextView errorMessage;
    @Bind(R.id.retry_button)
    View retryButton;
    public ErrorLayoutViewHolder(final View itemView, View.OnClickListener retryListener) {
        super(itemView);
        retryButton.setOnClickListener(retryListener);
    }
}

这是父类 ViewHolder.java

public class ViewHolder {
    final public View itemView;
    public ViewHolder(View itemView) {
        this.itemView = itemView;
        itemView.setTag(this);
        ButterKnife.bind(this, itemView);
    }
}

这是堆栈跟踪:

AndroidRuntime: java.lang.NullPointerException: Attempt to invoke     virtual method 'void  android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
02-25 20:38:57.538  5922  5922 E AndroidRuntime:    at com.micromax.aroundyou.model.ui.viewholders.ErrorLayoutViewHolder.<init>(ErrorLayoutViewHolder.java:38)

第 38 行

 retryButton.setOnClickListener(retryListener);

可能是什么问题?

我认为您应该将视图投射到按钮或您正在使用的任何自定义视图。你试过使用黄油刀的吗

@OnClick(R.id.retry_button) void foo(){ //TODO button logic }

?这样,您根本不关心视图的类。

最新更新