黄油刀8.0.1不起作用

我正在使用nullpointerexception butterknife 8.0.1 ,但出现一个nullpointerexception

这一行是在我的build.grade文件上: compile 'com.jakewharton:butterknife:8.0.1'

这是我的Main Class:我写的包括正确)

 import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends BaseActivity { @BindView(R.id.MainScreenTextView) TextView mainText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); **mainText.setText("Butter knife is working fine");** } 

这是MainActivity.xml

 <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="vertical"> <TextView android:id="@+id/MainScreenTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is the Main Screen" android:textColor="#000000" android:background="#666666" android:padding="5dp" android:textSize="20dp"/> </LinearLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> 

根据自述 ,您需要包含butterknife-compiler以便自动生成生成的代码:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } apply plugin: 'com.neenbedankt.android-apt' dependencies { compile 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-compiler:8.0.1' } 

没有这个,没有生成的代码被加载,因此没有设置字段。

你可以通过调用ButterKnife.setDebug(true)来validationButterKnife,并在Logcat中查找。

我在片段中使用这个库,并有NPE。 我的代码是:

 ButterKnife.bind(view); 

但是这是错的。 图书馆需要知道两个对象:
1)目标 – 带注释@BindView
2)来源 – 有意见

写下是正确的:

 ButterKnife.bind(this, view); 

当这个 – 你的片段和视图 – 这个片段的视图。

 App Level(build.gradle) apply plugin: 'android-apt' dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0' } Project Level(build.gradle) buildscript { repositories { jcenter() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } 

对我来说问题是我正在使用

 annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0' 

代替

  apt 'com.jakewharton:butterknife-compiler:8.7.0 

我也有这个问题,只是因为我已经从Android Studio的Dependencypipe理添加了butterknife,而不是从Butterknife网站上复制粘贴gradle。 所以我不得不添加compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'而不是只compile 'com.jakewharton:butterknife:8.5.1'

来自杰克·沃顿

是的,这个插件不再需要。 您已经在为Android Gradle插件内置的“butterknife-compiler”工件使用annotationProcessor。

然后解决方法是删除apt classpath com.neenbedankt.gradle.plugins:android-apt:1.8'

 Add ` annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'` In your gradle file it worked for me