我在我的android项目中使用Butterknife。我之前使用过这个,但由于某种原因它不再适用于新的更新。
这是我的设置:
(应用模块) 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
工作,我缺少什么?
感谢。
答案 0 :(得分:5)
您需要添加:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
项目gradle文件中的
并添加:
apt 'com.jakewharton:butterknife-compiler:8.4.0'
这位于顶部:
apply plugin: 'android-apt'
让奶油刀工作
有关详细信息,请参阅此链接:https://github.com/JakeWharton/butterknife
答案 1 :(得分:1)
配置项目级build.gradle以包含' android-apt'插件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
然后,应用' android-apt'你的模块级build.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);**