使用ButterKnife 在開發中需要注意的地方

1.Gradle 配置

compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

2.綁定

  • Activity 中使用,一定要在setContentView()之后再寫 ButterKnife.bind(this);
  • Fragment 中使用
View contentView = (ViewGroup) LayoutInflater.from(getActivity()).inflate(R.layout.test, null);
ButterKnife.bind(this, contentView);
  • 自定義view中,與fragment相似
View contentView= LayoutInflater.from(getContext()).inflate(R.layout.test, this);
ButterKnife.bind(this,contentView);

3.解綁

public class BaseFragment extends Fragment {
    public static final String TAG = "BaseFragment";
    protected Unbinder mUnbinder;

    @Override
    public void onDestroyView() {
        if (this.mUnbinder != null) {
            this.mUnbinder.unbind();
        }
        super.onDestroyView();
    }
}

4.特別注意

在異步請求中,尤其是網絡請求,一般異步回來網絡結果時,我們需要更新UI,這個時候,如果界面已經調用了onDestroy()或者onDestroyView(),相當于頁面已經銷毀,調用了unbind()方法了,如果我們還有更新UI的話,就會報空指針異常。所以必須在異步回調里,來判斷是否已經解綁,如果已經調用解綁了,那就不能再執行相關操作了。
方法是在unbind()之后將mUnbinder=null;
在異步回調時,首先判斷mUnbinder==null,則return;

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

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,349評論 25 708
  • 最近剛從舊公司離職,為面試在做準備,因為平時開發CV大法用得比較多,很多基礎知識掌握得不是很牢靠以及很多工具框架只...
    黎清海閱讀 2,237評論 1 19
  • 面試題總結 通用 安卓學習途徑, 尋找資料學習的博客網站 AndroidStudio使用, 插件使用 安卓和蘋果的...
    JingBeibei閱讀 1,715評論 2 21
  • 文 | 晨光花開 總是否定自己的人生,注定會一無所有。 我曾經崇拜過的偶像,因為曾經說過很多很多正能量的話,在話中...
    晨光花開閱讀 519評論 0 2
  • 如果窮忙,加班加點拼命干活,還做著自己不喜歡的事情。那么打工仔和奴隸有什么區別?
    BHeart閱讀 187評論 0 0