2016-09-20 46 views
0

我为我的android项目使用Butterknife。我以前使用过这个,但由于某种原因,它不再适用于新的更新。如何获得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

您是否添加了apt依赖 –

+0

只需在xml中进行更改时清理项目,因为Butterknife存储静态引用 – Nikhil

回答

5

您需要添加:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

在项目gradle这个文件

并添加:

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

,这在顶部:

apply plugin: 'android-apt' 

为butterknife工作

欲了解更多信息请参考以下链接:https://github.com/JakeWharton/butterknife

1

配置您的项目级的build.gradle包括了“Android的易”插件:

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
    } 
} 

然后,应用了“Android的容易”插件,在模块级的build.gradle并添加黄油刀依赖关系:

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