Android Butterknife在AOSP棉花糖中不初始化视图,但在棒棒糖中效果很好
我正在我的项目中使用butterknife库。当我构建棒棒糖AOSP时,它可以很好地工作,但是相同的代码没有初始化任何东西,所以在NPE被抛出棉花糖AOSP之后 代码如下:Android Butterknife在AOSP棉花糖中不初始化视图,但在棒棒糖中效果很好,android,android-source,android-6.0-marshmallow,butterknife,android-jack-and-jill,Android,Android Source,Android 6.0 Marshmallow,Butterknife,Android Jack And Jill,我正在我的项目中使用butterknife库。当我构建棒棒糖AOSP时,它可以很好地工作,但是相同的代码没有初始化任何东西,所以在NPE被抛出棉花糖AOSP之后 代码如下: public class ErrorLayoutViewHolder extends ViewHolder { @Bind(R.id.error_content_container) View errorContentLayout; @Bind(R.id.error_message) Tex
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);
}
}
retryButton.setOnClickListener(retryListener);
这是stacktrace:
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)
有什么问题吗?我认为您应该将视图转换为按钮或您正在使用的任何自定义视图。 你有没有试着使用
@OnClick(R.id.retry_按钮)void foo(){
//TODO按钮逻辑
}
??这样,您根本不关心视图的类。您应该调用
ButterKnife.bind(This,itemView)代码>在第38行butterknife.bind之前(此,itemView);在第38行之前调用的父类构造函数中,则应该在父类中有bind语句。您所做的类似于尝试从父类分配子类变量!问题是,这段代码在棒棒糖aosp中运行良好,但在棉花糖aospoh中运行不好。。那么我相信这是图书馆的创作者应该关注的。您是否尝试过在他们的github repo上提出问题?但是,当我删除按钮并尝试更改textview(errorMessage)的可见性时,它也会抛出NPEDid。当您尝试显示errorMessage时,是否检查errorMessage是否为null?如果确定它不为空,请尝试以下操作:errorMessage.setText(String.valueOf(yourror))
。如果这不是问题,那么检查你的布局,确保你有你试图绑定的所有东西的视图。问题是,这段代码在棒棒糖aosp中运行良好,但在棉花糖aosp中运行不正常。最近,我发现在棉花糖中使用了jack编译器,所以butterknife不起作用。我在android studio gradle文件中也做了同样的事情。我加了一句话:UseJackTrue。如何解决这个问题?