2017-07-19 1 views
0

Ich lerne Butterknife, hier ist mein einfacher Beispielcode. Aber wenn ich renne, wirft es NullPointerException in "setText". Ist es Android Studio Fehler, wie ich in vielen Foren gelesen oder ich bin Codierung es falschButterknife - Nullzeiger Ausnahme

public class MainActivity extends AppCompatActivity { 

    @Inject 
    SharedPreferences mSharedPrefs; 
    @BindView(R.id.txtName) EditText entervalue; 
    @BindView(R.id.enternamelabel) TextView enternamelabel; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Call Butterknife 
     ButterKnife.bind(MainActivity.this); 

     enternamelabel.setText("Enter Name"); 

     //((DemoApplication) getApplication()).getComponent().inject(this); 
     //mSharedPrefs.edit().putString("status", "success!").apply(); 

    } 

App Modul

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' //For Butterknife 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "com.myandroidframework.myandroidframework" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     compileOptions.incremental = false 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    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:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    testCompile 'junit:junit:4.12' 

    // Dependency Injection - Dagger2 
    compile 'com.google.dagger:dagger:2.0' 
    provided 'com.google.dagger:dagger-compiler:2.0' 
    provided 'org.glassfish:javax.annotation:10.0-b28' 

    // Dependency Injection - Butterknife 
    testCompile 'junit:junit:4.12' 
    compile 'com.jakewharton:butterknife:8.5.1' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 
} 

Projektmodul

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.2' 
     //For Butterknife 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

Fehler:

07-19 16:11:22.422 21754-21754/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: com.myandroidframework.myandroidframework, PID: 21754 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myandroidframework.myandroidframework/com.myandroidframework.myandroidframework.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                 at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:154) 
                 at android.app.ActivityThread.main(ActivityThread.java:6119) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
                 at com.myandroidframework.myandroidframework.MainActivity.onCreate(MainActivity.java:37) 
                 at android.app.Activity.performCreate(Activity.java:6679) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
                 at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:154)  
                 at android.app.ActivityThread.main(ActivityThread.java:6119)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
+0

posten Sie Ihre Log hier –

+0

@SunilP - Herausgegeben und veröffentlicht – user45678

+0

Haben u Textview-ID überprüfen ist richtig angegeben? –

Antwort

2

war hier die Frage

Ich brauche nicht diese Zeile hinzufügen

apply plugin: 'com.jakewharton.butterknife' 

Im Folgenden wird meine App Ebene gradle

// Dependency Injection - Butterknife 
    testCompile 'junit:junit:4.12' 
    compile 'com.jakewharton:butterknife:8.5.1' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 
} 

Im Folgenden wird meine Projektebene seiner gradle

dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.2' 
     //For Butterknife 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

    } 
+0

Diese Antwort ist nicht völlig problematisch, immer noch Fehler: Plugin mit ID 'com.jakewharton.butterknife' nicht gefunden. – Light

0

App Stufe (build.gradle)

apply plugin: 'android-apt' 
dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    testCompile 'junit:junit:4.12' 
    compile 'com.jakewharton:butterknife:8.4.0' 
    apt 'com.jakewharton:butterknife-compiler:8.4.0' 
} 


Project Level(build.gradle) 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 

     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
}