我使用Butterknife为我的android项目。我以前用过这个,但由于某种原因,它不再适用于新的更新。
下面是我的设置:
(App Module) build.gradle:
compile 'com.jakewharton:butterknife:8.4.0'
:
@BindView(R.id.navigation_pager) ViewPager mViewPager;
/.../
@Override
protected void onCreate(Bundle savedInstanceState) {
/...
/...
ButterKnife.bind(this);
异常堆栈:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
为了让Butterknife
工作,我缺少什么?
谢谢。
您需要添加:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
Project gradle文件并添加:
apt 'com.jakewharton:butterknife-compiler:8.4.0'
and this at top:
apply plugin: 'android-apt'
让butterknife工作
更多信息请参考此链接:https://github.com/JakeWharton/butterknife
配置您的项目级构建。Gradle要包含'android-apt'插件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
然后,在模块级构建中应用'android-apt'插件。gradle并添加Butter Knife依赖项:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
}
。
class ExampleActivity extends Activity {
@BindView(R.id.navigation_pager) ViewPager mViewPager;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
viewPager.setAdapter(new CustomPagerAdapter(this));
}
}
**MAKE SURE TO CALL setAdapter() only after ButterKnife.bind(this);**