ButterKnife为什么不能绑定私有内部类中的字段?
在一个片段中,我有一个打开PopupWindow的按钮。ButterKnife为什么不能绑定私有内部类中的字段?
private class onMenuClickListener implements View.OnClickListener { @BindView(R.id.popup_radiogroup) RadioGroup popupRadioGroup;
@BindView(R.id.popup_textview) TextView popupTextView;
PopupWindow popupWindow = getPopupWindow(R.layout.popup_window);
@Override
public void onClick(View v) {
ButterKnife.bind(this, popupWindow.getContentView());
popupWindow.showAsDropDown(menuButton);
}
}
private PopupWindow getPopupWindow(int layout_resource_id) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(layout_resource_id,(ViewGroup)getView());
return new PopupWindow(popupView,
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT,true);
}
当我尝试运行此代码时,出现此错误:“@BindView字段可能不包含在私有类中。” ButterKnife如何不能访问私人内部类,但它可以自由访问受保护的内部类?
回答:
它们不能是私人的,否则它无法访问它。 会为您生成一些代码,其中包含您不愿意为您编写的所有样板代码。当你写ButterKnife.bind(this)
,其中this
在这种情况下是Activity
,它试图通过你提供的参考访问每个注释成员,并通过显式强制转换执行findViewById
。如果该成员是私人的,它不能被访问(基本的Java)。
以上是 ButterKnife为什么不能绑定私有内部类中的字段? 的全部内容, 来源链接: utcz.com/qa/265949.html