2012-01-19 10 views
5

W moim Android app klasa aktywność WebView ma następującą linię,ExceptionInInitializerError w aplikacji na Androida?

webView.addJavascriptInterface(new JSInterface(this), "Android"); 

A w klasie JSInterface, jestem inicjowanie Google "SpreadSheetService" jak poniżej,

import com.google.gdata.client.spreadsheet.SpreadsheetService; 

--- some more imports --- 


public class JSInterface { 
    Context mContext; 

    public SpreadsheetService service; 

    /** Instantiate the interface and set the context */ 
    JSInterface(Context c) { 
     mContext = c; 
     service = new SpreadsheetService("List Demo"); 
    } 

    ------- some more code ----- 

Kiedy uruchomić aplikację I otrzymuję następujące wyjątek

01-19 21:38:00.652: E/AndroidRuntime(4085): java.lang.ExceptionInInitializerError 

który ma poniższy ślad

01-19 21:38:00.652: E/AndroidRuntime(4085): FATAL EXCEPTION: main 
01-19 21:38:00.652: E/AndroidRuntime(4085): java.lang.ExceptionInInitializerError 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at com.android.quotes.JSInterface.<init>(JSInterface.java:33) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at com.android.quotes.CHQuotesActivity.onCreate(CHQuotesActivity.java:19) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.Activity.performCreate(Activity.java:4465) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.ActivityThread.access$600(ActivityThread.java:122) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.os.Looper.loop(Looper.java:137) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 21:38:00.652: E/AndroidRuntime(4085):  at java.lang.reflect.Method.invoke(Method.java:511) 

Szukałem Google, ale nie dostałem żadnego rozwiązania dla tego .. Jakiś pomysł na dlaczego otrzymuję ten wyjątek?

Peter

+0

Czy jest możliwe utworzenie obiektu asyncTask/Handler w dowolnym miejscu kodu? –

Odpowiedz

13

Based on this documentation ExceptionInInitializerError jest wyrzucane w celu wskazania, że ​​wyjątek podczas oceny statycznych inicjatora lub inicjatora o zmiennej statycznej. Sprawdź, czy Twój kod ma logikę inicjalizacji statycznej.

+0

Tak, ale jaki może być problem? Statyczny element członkowski nie powinien mieć żadnych problemów, dlatego jest statyczny. –

+2

@IgorGanapolsky: Nie jest to spowodowane dostępem, ponieważ inicjalizowana wartość nie jest prawidłowo skonstruowana. Prawa część boczna zmiennej statycznej. – kosa

+0

Interesujące, zainicjowane do czego? Niepowtarzalny typ lub zero? –

Powiązane problemy