如何让 Butterknife 工作?

How to get Butterknife working?

我正在为我的 android 项目使用 Butterknife。我以前用过这个,但由于某种原因它不再适用于新更新。

这是我的设置:

(应用模块)build.gradle:

compile 'com.jakewharton:butterknife:8.4.0'

activity:

@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'

在项目 gradle 文件中

并添加:

apt 'com.jakewharton:butterknife-compiler:8.4.0'

顶部是:

apply plugin: 'android-apt'

让 butterknife 工作

有关更多信息,请参阅此 link:https://github.com/JakeWharton/butterknife

配置项目级别 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);**