Android studio ButterKnife8.1.0null 指標/相關配置及其簡單使用,butterknifenull 指標
ButterKnife 是這兩年比較流行的開源庫,是一個View注入架構,其主要功能是代替findViewByid()方法。同時還能夠快速的添加監聽事件,能夠更容易的實現MVVM模式,是非常實用的工具之一。
剛開始使用ButterKnife的時候很多人可能會遇到NullPointerException或者“找不到符號”,這皆是由於ButterKnife配置有誤。下面我們來詳細的來說明ButterKnife的配置
首先我們需要匯入ButterKnife
也可以在這裡添加
同時還需要安裝ButterKnife的外掛程式
這裡我已經安裝好了,看起來有一些不同。沒安裝的時候先搜尋然後點下面的按鈕就會出來了
然後配置
注意,這裡如果沒有完成上面安裝外掛程式的步驟會無法識別apt()
還不理解的話,下面就貼出完整的build.gradle吧
1 // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 3 buildscript { 4 repositories { 5 jcenter() 6 } 7 dependencies { 8 classpath 'com.android.tools.build:gradle:2.1.0' 9 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'10 // NOTE: Do not place your application dependencies here; they belong11 // in the individual module build.gradle files12 }13 }14 15 allprojects {16 repositories {17 jcenter()18 }19 }20 21 task clean(type: Delete) {22 delete rootProject.buildDir23 }
1 apply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 23 5 buildToolsVersion "23.0.3" 6 7 defaultConfig { 8 applicationId "com.lcc.fjnu.damuvideobysohu" 9 minSdkVersion 1410 targetSdkVersion 2311 versionCode 112 versionName "1.0"13 }14 buildTypes {15 release {16 minifyEnabled false17 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'18 }19 }20 }21 22 buildscript {23 repositories {24 mavenCentral()25 }26 dependencies {27 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'28 }29 }30 31 apply plugin: 'com.neenbedankt.android-apt'32 33 dependencies {34 compile fileTree(include: ['*.jar'], dir: 'libs')35 testCompile 'junit:junit:4.12'36 compile 'com.android.support:appcompat-v7:23.3.0'37 compile 'com.android.support:design:23.3.0'38 compile 'com.jakewharton:butterknife:8.1.0'39 apt 'com.jakewharton:butterknife-compiler:8.1.0'40 }
以上就是配置的過程
再說一點ButterKnife8.1.0的Binder 方法是@BindView 之前的版本是@Bind,再之前是@InjectView.
具體的說明可以參照其官網(未牆) http://jakewharton.github.io/butterknife/
這裡會給出一個簡單的範例:
1 public class MainActivity extends AppCompatActivity { 2 3 @BindView(R.id.toolbar) 4 Toolbar mToolbar; 5 @BindView(R.id.tabs) 6 TabLayout mtabs; 7 @BindView(R.id.appbar) 8 AppBarLayout mappbar; 9 @BindView(R.id.container)10 ViewPager container;11 @BindView(R.id.fab)12 FloatingActionButton fab;13 ......}
不需要重新執行個體化以及findviewbyid(),代碼變得更簡潔明了