模塊開發(fā)中庫R文件相關(guān)問題

簡介

鄙人開發(fā)android也有一段時間了,butterKnife確實(shí)提高了開發(fā)效率但是在模塊開發(fā)的時候確實(shí)也有不少的坑等著大,親身被這些坑折磨的欲仙欲死,在此與大家分享一些心得,不喜勿噴。

資源綁定

官網(wǎng): https://github.com/JakeWharton/butterknife 也有介紹

@BindView(R2.id.user)
EditText username;
@BindView(R2.id.pass)
EditText password;

重新編譯后就會在本地生成R2文件

onclick事件也需要單獨(dú)寫,類似這樣,不能合起來寫,自動生成的樣式會有錯誤

@OnClick(R2.id.user)
public void onUserClick(){}
@OnClick(R2.id.pass)
public void onPassClick(){}

隱藏的bug

當(dāng)在庫中使用了butterknife,但是庫中的邏輯并不能滿足我們的需求的時候,我們需要將庫中的代碼并成基類,并繼承出來,這個時候,在主工程或者第二級庫導(dǎo)包的時候,會出現(xiàn)一個bug。繼承出來的資源id和庫里面的資源id會出現(xiàn)沖突,因?yàn)?strong>并不是同一個R文件,相當(dāng)于給一個資源兩個id,這個時候我們的程序怎么樣也跑不起來,但是又不知道問題在哪,報的錯誤亂七八糟。在這個關(guān)鍵時候,我們千萬不要著急,下面就說下解決方法。

如何解決呢?

如果我們在庫里面使用了butterknife,那我們繼承出來的界面就不要在使用butterknife了,@bindView @OnClick等都不要使用了,,避免同一個資源給兩個id,直接用最原始的findViewbyId,setOnClickListener就可以了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容