2014-07-06 20 views
6

Tôi thực sự không biết điều gì đang diễn ra với ứng dụng Android mà tôi đang xây dựng. Tại một số điểm về sự phát triển của nó, tôi bắt đầu nhận được nó phá vỡ ngay sau khi nó bắt đầu trong giả lập, với thông điệp "Foo dừng lại". Dưới đây là các bản ghi lỗi, nếu có ai có thể giúp tôi:NullPointerException trong 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

Bạn có biết NullPointerException là gì không? Bạn stacktrace cho bạn biết đó là vấn đề. Nó thậm chí còn nói với bạn rằng nó nằm trên dòng 89. Vấn đề là gì? – csmckelvey

+0

@Takendarkk dòng 89 ở đâu? Tôi sẽ nói anh ta nên xem xét những gì xảy ra trong MainActivity trên dòng 31, điều đó có vẻ là nguyên nhân. Dù bằng cách nào mà NullPointerException được ném nó sẽ được tốt đẹp với một số mã hỗ trợ tại sao nó xảy ra. Vì vậy, nếu OP có thể cung cấp một số nó sẽ là tuyệt vời. – Cheesebaron

+0

@codeMagic Đây không phải là một NPE "chuẩn". – matiash

Trả lời

13

Bạn đang gọi số getResources() từ trình khởi tạo trường. Một cái gì đó như

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

(hoặc có thể rút hoặc các loại tài nguyên khác).

Điều này không hợp lệ vì Ngữ cảnh chưa được thiết lập. Di chuyển nhiệm vụ này bên trong phương thức onCreate().

+0

Dành cho những người đi qua và gặp rắc rối: Tôi đã cố gắng sử dụng 'getResources()' trước lệnh gọi 'onCreate'. Đang cố gắng lấp đầy một chuỗi các chuỗi (từ string.xml). Như matiash nói, điều này là không được phép. – rafanasil

0

Các kiểm tra ngoại lệ java.lang.NullPointerException được ném khi bạn đang cố gắng sử dụng một đối tượng mà không cần tham khảo, nói cách đơn giản mà có nghĩa là: bạn đang cố gắng sử dụng một biến đối tượng không có giá trị. Hãy nhớ rằng một biến giữ bit, nguyên thủy và không nguyên thủy biến làm, nhưng sự khác biệt là biến nguyên thủy giữ giá trị trong bit, nhưng biến không nguyên thủy giữ các bit (như một hướng) để truy cập các đối tượng trong bộ nhớ, và khi nó không được sử dụng nữa GGC (Garbage Colector) giết chết nó.

Các vấn đề liên quan