你的方法頂部只需添加@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