Я использую библиотеку butterknife в своем проекте. Он отлично работает, когда я создаю Lollipop AOSP, но тот же код ничего не инициализирует, и после этого NPE бросается в Marshmallow AOSP.Butterknife не инициализирует виды в зефире AOSP, но отлично работает в lollipop
Вот код:
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);
}
}
Это 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)
линия 38 :
retryButton.setOnClickListener(retryListener);
В чем проблема?
Вы должны называть 'ButterKnife.bind (this, itemView);' перед строкой 38 –
ButterKnife.bind (this, itemView); находится в конструкторе родительского класса, который вызывается до строки 38 – charlie156
. Затем вы должны иметь оператор привязки в родительском классе. То, что вы делаете, похоже на попытку присвоить переменную дочернего класса из родительского класса! –