你的方法顶部只需添加@Optional
注释,如下面的代码所示:
@Optional
@OnClick({R.id.bt1, R.id.bt2, R.id.inflated_bt1, R.id.inflated_bt2})
public void onClick(View view) {
// ...
}
有,你没有R.id.inflated_bt1
布局XML的情况下,你在你的Activity
上使用。对于这种情况,您必须使用@Optional
批注。
如果您只使用@OnClick
标注在YourClass$$ViewInjector
源代码如下所示:
view = finder.findRequiredView(source, 2131230789, "method 'onClick'");
view.setOnClickListener(
new butterknife.internal.DebouncingOnClickListener() {
@Override public void doClick(
android.view.View p0
) {
target.onClick();
}
});
和findRequiredView
抛出IllegalStateException
时的观点是null
的方法。
但是当你使用另外@Optional
注释,生成的代码看起来像下面
view = finder.findOptionalView(source, 2131230789);
if (view != null) {
view.setOnClickListener(
new butterknife.internal.DebouncingOnClickListener() {
@Override public void doClick(
android.view.View p0
) {
target.onClick();
}
});
}
根据ButterKnife github页面,“添加一个@Nullable注释到字段或@Optional注释到方法”http://jakewharton.github.io/butterknife/ – TheoKanning 2017-02-14 00:07:25
@TheoKanning你认真地downvote我的答案?文档已更改。当我在一年前回答这个问题时,没有一个“可选”。如果答案需要更新,请更新它! – AutonomousApps 2017-02-14 02:05:11