絕對不容錯過,ButterKnife使用詳談

本博客原地址:http://www.jianshu.com/p/b6fe647e368b

(1)ButterKnife是什麼?

在開發過程中,我們總是會寫大量的findViewById和點擊事件,像初始view、設置view監聽這樣簡單而重複的操作讓人覺得特別麻煩,當然不會偷懶的程序員不是好程序員,自然也出現了相應的解決方案–依賴注入。而ButterKnife則是依賴注入中相對簡單易懂的很不錯的開源框架,(其實ButterKnife也不算嚴格意義上的依賴注入,後面文章中會做分析)。但ButterKnife作爲JakeWharton大神寫的註解框架被廣泛應用於android開發中,自然也有它的過人之處。下面對它的使用過程進行描述。

butterKnife

(2)ButterKnife 有哪些優勢?

ButterKnife的具體使用,請參考文章
http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549
它的具體優勢:
1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率
2.方便的處理Adapter裏的ViewHolder綁定問題
3.運行時不會影響APP效率,使用配置方便
4.代碼清晰,可讀性強
butterknife的使用

(3) butterknife 和其他依賴注入框架的區別在哪裏?

3.1 依賴注入框架的區別的聯繫:
其實主要在android中使用的依賴注入框架爲Dagger、Butter Knife、RoboGuice、Android Annotations。這裏提供鏈接:
Android’s Options for Dependency Injection: Dagger, RoboGuice, and ButterKnife
對應的翻譯文章:Android依賴注入:Dagger、RoboGuice和ButterKnife.
3.2 當然,這種典型的問題當然少不了StackOverflow上去看看,

輸入關鍵字

找到點贊最多的答案,肯定對你有幫助

大概意思:
Buffer knife目的爲注入到view,所以能夠在非activity裏面注入,也能注入到inflate的views裏面Dagger能夠注入到任何你想要的對象,只要其在module類中。或者它是構造器。但是缺少對方法和字段的注入支持。Buffer knife只是避免樣板代碼,findViewById,僅此而已,所以不能算是一個真正的注入。只是一個view的代言。

(4)ButterKnife使用中有哪些注意的點呢?

注意:
1. Activity ButterKnife.bind(this);必須在setContentView();之後,且父類bind綁定後,子類不需要再bind
2. Fragment ButterKnife.bind(this, mRootView);
3. 屬性佈局不能用private or static 修飾,否則會報錯
4. setContentView()不能通過註解實現。
5. ButterKnife已經更新到版本7.0.1了,以前的版本中叫做@InjectView了,而現在改用叫@Bind,更加貼合語義。
6. 在Fragment生命週期中,onDestoryView也需要Butterknife.unbind(this)
7. ButterKnife不能再你的library module中使用哦!!這是因爲你的library中的R字段的id值不是final類型的,但是你自己的應用module中確是final類型的。針對這個問題,有人在Jack的github上issue過這個問題,他本人也做了回答,點擊這裏
屬性必須是一個常量

(5)我還想更懶怎麼辦?

哈哈,這裏說的是添加插件,讓你寫代碼更快捷。
Zelezny插件的使用的使用能讓你變得更懶(也代碼更快)
**Zelezny插件的使用**
5.1 怎麼使用插件?

插件使用步驟1

插件使用步驟2

插件使用步驟3

(6)推薦鏈接:

1 ButterKnife github地址
2 詳解Dagger2
3 Android’s Options for Dependency Injection: Dagger, RoboGuice, and ButterKnife(這裏是翻譯文章鏈接Android依賴注入:Dagger、RoboGuice和ButterKnife)
4 Dagger官網
5關於在library中應用ButterKnife出現的問題
6 [8 個最優秀的 Android Studio 插件](http://www.codeceo.com/article/8-android-studio-plugins.html)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章