如何让Butterknife工作?

时间:2016-09-20 16:23:49

标签: android butterknife

我在我的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工作,我缺少什么?

感谢。

2 个答案:

答案 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);**