我在我的项目中使用了黄油刀库。当我在棒棒糖 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
}
?这样,您根本不关心视图的类。