ButterKnife:没找到。尝试超类android.support.v7.app.AppCompatActivity

时间:2016-09-25 09:19:54

标签: android butterknife null-pointer

我正在尝试使用 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 以及如何解决这个问题?

1 个答案:

答案 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