在module中依賴butterknife,報錯"attribute value must be constant"

如何在module中使用butterknife

在工程里新建了一個module,在該module依賴了butterknife,但是運行時報錯"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)點擊時無法進入到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) {
    }

至少可以跑通了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容