2014-07-06 11 views
6

Non so davvero cosa sta succedendo con l'app per Android che sto costruendo. Ad un certo punto del suo sviluppo, ho iniziato a romperlo non appena si avvia nell'emulatore, con il messaggio "Foo stopped". Ecco il log degli errori, se qualcuno mi potrebbe aiutare:NullPointerException in ContextWrapper.getResources()

07-05 21:13:30.063 7647-7647/root.fazerumsom E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: root.fazerumsom, PID: 7647 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{root.fazerumsom/root.fazerumsom.MainActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at android.content.ContextWrapper.getResources(ContextWrapper.java:89) 
     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78) 
     at root.fazerumsom.MainActivity.<init>(MainActivity.java:31) 
     at java.lang.Class.newInstanceImpl(Native Method) 
     at java.lang.Class.newInstance(Class.java:1208) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
            at android.app.ActivityThread.access$800(ActivityThread.java:135) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5001) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
            at dalvik.system.NativeStart.main(Native Method) 
+0

Sai cos'è una NullPointerException? Lo stacktrace ti dice che questo è il problema. Ti dice anche che è sulla linea 89. Qual è il problema? – csmckelvey

+0

@Takendarkk line 89 dove? Direi che dovrebbe guardare a cosa succede in MainActivity sulla riga 31, che sembra essere la causa. In entrambi i casi in cui viene lanciata NullPointerException, sarebbe bello con un codice che supporti il ​​motivo per cui accade. Quindi se OP potesse fornire qualcosa sarebbe fantastico. – Cheesebaron

+0

@codeMagic Questo non è in realtà un NPE "standard". – matiash

risposta

13

Si sta chiamando getResources() da un inizializzatore di campo. Qualcosa come

private String mStr = getResources().getString(...); 

(o con drawable o altri tipi di risorse).

Questo non è valido, poiché il contesto non è ancora impostato. Sposta questo compito all'interno del metodo onCreate().

+0

Solo per le persone che sono di passaggio e nei guai: stavo cercando di usare 'getResources()' prima della chiamata 'onCreate'. Cercando di riempire una serie di stringhe (da string.xml). Come disse Matias, questo non è permesso. – rafanasil

0

Il verificata un'eccezione java.lang.NullPointerException viene generata quando si sta cercando di utilizzare un oggetto senza alcun riferimento, in parole semplici questo significa: si sta cercando di utilizzare un variabile dell'oggetto senza valore.

Ricordare che un bit di mantenimento variabile, la variabile primitiva e non primitiva, ma la differenza è che la variabile primitiva mantiene il valore in bit, ma la variabile non primitiva mantiene i bit (come una direzione) per accedere all'oggetto in memoria, e quando non viene più utilizzato GGC (Garbage Colector) lo uccide.

Problemi correlati