0

我在我的项目中使用了黄油刀库。当我在 Lollipop AOSP 中构建时它工作正常,但相同的代码什么也不初始化,所以在 Marshmallow AOSP 中抛出 NPE 之后。

这是代码:

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);

可能是什么问题?

4

1 回答 1

0

我认为您应该将视图转换为按钮或您正在使用的任何自定义视图。你试过用Butterknife 的

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

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

于 2016-02-25T15:31:32.563 回答