当前位置: 首页 > 知识库问答 >
问题:

Android:Butternife-@bindview-throw NPE

杭泉
2023-03-14

Android Studio 2.3.3。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ProgressBar
        android:id="@+id/downloadProgressBar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android'

    android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.myproject"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        dev {
            initWith(debug)

        }
    }

}    

dependencies {
    annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
    annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTER_KNIFE_VERSION"   
    compile "com.jakewharton:butterknife:$BUTTER_KNIFE_VERSION" 
}
public class MyActivityextends extends AppCompatActivity  {
    @BindView(R.id.downloadProgressBar) ProgressBar downloadProgressBar;       

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pdf_viewer_activity);
        ButterKnife.bind(this);
        ButterKnife.setDebug(true);    
        // THROW NPE!!!
        downloadProgressBar.setVisibility(View.GONE); 
     }    
}
NullPointerException at com.myproject.MyActivity.onCreate(MyActivity.java:63)

共有1个答案

方宜
2023-03-14

你在用Kotlin,所以你应该做

apply plugin: 'com.android.application'
//apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

dependencies {
    kapt 'com.github.bumptech.glide:compiler:4.2.0'
    kapt "com.jakewharton:butterknife-compiler:$BUTTER_KNIFE_VERSION"   
    compile "com.jakewharton:butterknife:$BUTTER_KNIFE_VERSION" 
}
 类似资料:
  • 对此可能有一个简单的答案,但试图充分使用Butternife,将一些FindViewByID转换为@BindViews,并注意到我不能对需要声明为final的视图使用BindView,因为Java引发了“变量'x'可能没有初始化”的错误。 显然,我不需要使用BindView,而只是对这一个感到好奇,以了解更多关于Java的知识。我读了一点关于最终宣言的意思,但不能把它和巴特尼刀联系起来。谢谢你的帮

相关问答

相关文章

相关阅读