2014-04-15 19 views
6

quello che sto facendo ::Utilizzando biblioteca Coltello da burro per la vista iniezione

  1. sto cercando di eseguire butter knife library per il mio progetto semplice
  2. Ho seguito tutti i passaggi nella documentazione, ma io sono ancora errori di registro che ottengono
  3. come posso risolvere questo problema, mi sto perdendo ogni passo
  4. ho anche aggiunto il vaso nella cartella librerie

MainActivity.java

package com.example.butterknife; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import butterknife.ButterKnife; 
import butterknife.InjectView; 

public class MainActivity extends Activity { 

    @InjectView(R.id.txtID) TextView title; 

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

     ButterKnife.inject(this); 
     title.setText("Hello Everyone !!"); 

    } 
} 

Log ::

04-15 11:50:57.845: E/AndroidRuntime(913): FATAL EXCEPTION: main 
04-15 11:50:57.845: E/AndroidRuntime(913): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.butterknife/com.example.butterknife.MainActivity}: java.lang.NullPointerException 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.os.Looper.loop(Looper.java:137) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread.main(ActivityThread.java:4340) 
04-15 11:50:57.845: E/AndroidRuntime(913): at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 11:50:57.845: E/AndroidRuntime(913): at java.lang.reflect.Method.invoke(Method.java:511) 
04-15 11:50:57.845: E/AndroidRuntime(913): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-15 11:50:57.845: E/AndroidRuntime(913): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-15 11:50:57.845: E/AndroidRuntime(913): at dalvik.system.NativeStart.main(Native Method) 
04-15 11:50:57.845: E/AndroidRuntime(913): Caused by: java.lang.NullPointerException 
04-15 11:50:57.845: E/AndroidRuntime(913): at com.example.butterknife.MainActivity.onCreate(MainActivity.java:19) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.Activity.performCreate(Activity.java:4465) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
04-15 11:50:57.845: E/AndroidRuntime(913): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
04-15 11:50:57.845: E/AndroidRuntime(913): ... 11 more 
04-15 11:51:06.722: I/Process(913): Sending signal. PID: 913 SIG: 9 
+0

sembra 'title' è nullo, non è stato iniettato con qualsiasi cosa. –

risposta

13

seguire questa procedura [in Eclipse IDE]:

1) Fare clic destro sul vostro progetto withIn Package Explorer. Ottenuto a Java Compiler ->Annotation Processing e controllare lo Enable project specific settings.

2) Espandere la sezione Annotation Processing e selezionare Factory Path. Controllare Enable project specific settings e quindi fare clic su Add JARs Passare alla cartella/cartella del progetto e selezionare il contenitore .

3) Fare clic su Ok per salvare le nuove impostazioni. Eclipse ti chiederà di ricostruire il tuo progetto al quale dovresti fare clic su Yes.

Nota: Assicurarsi che la cartella .apt_generated/ si trovi nella root del progetto. Dovrebbe contenere file come YOURACTIVITY$$ViewInjector.java. Se questi file non sono presenti, attiva una build pulita selezionando Progetto → Pulisci. Questa cartella e questi file non devono essere controllati nel controllo di revisione.

Riferimento ->Set up manual configuration for ButterKnife annotations

+0

Grazie per avermi segnalato sulla documentazione ... Sono stato in grado di risolverlo anche [+1]! – Devrath

+0

@Casper piace aiutare :) – nitesh

+0

L'opzione di elaborazione annotazione non esisteva nella mia installazione Eclipse doveva seguire il lavoro qui http://stackoverflow.com/a/26028701/329034 – mbwasi

3

IntelliJ IDEA - Se il progetto utilizza una configurazione esterna (come un pom.xml Maven) quindi l'elaborazione di annotazione dovrebbe funzionare.

procedere come segue:

  1. preferenza Open IDEA: File ->Other Settings ->Default Settings
  2. Spostarsi a Compiler ->Annotation Processors Poi Controllare Enable annotation processing

Riferimento ->Set up manual configuration for ButterKnife annotations

aggiornamento 30-6-2015

seguente procedura per Intellij IDEA 14.0:

  1. preferenza

    Open IDEA: File ->Settings oppure fare clic su ctl + alt + s

  2. Passare a Build, Execution and deployment ->Compiler ->Annotation Processors e scegli il tuo progetto quindi Verifica Enable annotation processing

+1

Potrebbe essere meglio usare File - Impostazioni invece di File - Impostazioni predefinite E per IntelliJ IDEA 14.1 la finestra di dialogo delle impostazioni ha ottenuto un livello più profondo, quindi è Build, Execution, Deployment - Compiler - Processori di annotazione – RenniePet

+0

Non è più un'opzione –

+0

@IgorGanapolsky provare nuovi passaggi nella mia risposta aggiornamento –

0

@Bind sostituisce @InjectView e @InjectViews. ButterKnife.bind e ButterKnife.unbind sostituiscono rispettivamente ButterKnife.inject e ButterKnife.reset.

un'occhiata a questo: @InjectView replaced ...

Problemi correlati