簡介
鄙人開發(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就可以了