如何在module中使用butterknife
在工程里新建了一個module退腥,在該module依賴了butterknife任岸,但是運(yùn)行時報錯"attribute value must be constant",去github官網(wǎng)上查了下狡刘,https://github.com/JakeWharton/butterknife享潜。
原來如果在子模塊中依賴的話,dependence需要修改嗅蔬,
在項目的工程gradle里添加
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
}
在module的gradle頂部添加
apply plugin: 'com.jakewharton.butterknife'
最后別忘了rebuild project剑按,然后在module中疾就,把R.id都替換成R2.id。
在子模塊中點擊事件onClick無法工作
剛解決完在子模塊中使用的問題吕座,馬上又踩入另一個坑虐译,onClick無法工作,按常規(guī)寫法
@OnClick({R2.id.btn_search, R2.id.btn_add, R2.id.btn_delete, R2.id.btn_update})
public void onViewClicked(View view) {
switch (view.getId()) {
case R2.id.btn_search:
break;
case R2.id.btn_add:
break;
case R2.id.btn_delete:
break;
case R2.id.btn_update:
break;
}
}
發(fā)現(xiàn)點擊時無法進(jìn)入到case里吴趴,打印后發(fā)現(xiàn)view.getId和R2.id對不上漆诽,非常神奇,但是無可奈何锣枝。
在github上找了半天厢拭,有不少類似案例 https://github.com/JakeWharton/butterknife/issues/762
均未找到合適的解決辦法,最后不得已撇叁,把onViewClicked方法拆分成
@OnClick({R2.id.btn_search})
public void onSearchClicked(View view) {
}
@OnClick({R2.id.btn_add})
public void onAddClicked(View view) {
}
@OnClick({R2.id.btn_delete})
public void onDeleteClicked(View view) {
}
@OnClick({R2.id.btn_update})
public void onUpdateClicked(View view) {
}
至少可以跑通了供鸠。