我正在尝试使用 Butterknife
绑定TextView我有主要活动,布局包含带有id tv_app_name的TextView。我从documentation开始关注。
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tv_app_name)
TextView tvAppName;
@BindString(R.string.app_name)
String appName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
ButterKnife.setDebug(true);
tvAppName.setText(appName);
}
}
我遇到的问题是 tvAppName
未初始化并显示nullPointerException
。我添加了 ButterKnife.setDebug(true);
正如StackOverflow中的一些答案中所建议的那样我在日志中找到 ButterKnife: Not found. Trying superclass android.support.v7.app.AppCompatActivity
。
我在寻找这个问题的解决方案。有些人说过添加依赖butterknife-compiler
,但我已添加了:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
//butterknife
compile 'com.jakewharton:butterknife:8.4.0'
apk 'com.jakewharton:butterknife-compiler:8.4.0'
}
bihinde有什么问题:
ButterKnife:没找到。尝试超类android.support.v7.app.AppCompatActivity 以及如何解决这个问题?
答案 0 :(得分:3)
您的依赖项中存在拼写错误。 build.gradle文件中的行
apk 'com.jakewharton:butterknife-compiler:8.4.0'
应该是
apt 'com.jakewharton:butterknife-compiler:8.4.0'
您还需要添加
classpath'com.neenbedankt.gradle.plugins:android-apt:1.8'
到您的项目级build.gradle文件 - 有关详细信息,请参阅https://github.com/JakeWharton/butterknife#download。