를 throw 나는 내 응용 프로그램에 다음 코드를 가지고 :파일 목록은 NullPointerException이
String[] filelist = APP.getContext().filelist();
...
public class APP extends Application {
static Context theContext;
public void onCreate() {
super.onCreate();
theContext = this;
}
public static Context getContext() {
Log.v("APP", "APP.getContext() called.");
return theContext;
}
}
에 상관없이이 코드를 다시 작성 방법 NullPointerException
을 반환 Context.filelist()
방법. 왜 그렇게했을까요?
VERBOSE
에 로그인하면 getContext()
이 표시됩니다.
로그 캣 :
D/AndroidRuntime( 342): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime( 342): CheckJNI is ON
D/AndroidRuntime( 342): Calling main entry com.android.commands.am.Am
I/ActivityManager( 83): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.gobernador/.TopPage } from pid 342
I/ActivityManager( 83): Start proc com.gobernador for activity com.gobernador/.TopPage: pid=350 uid=10036 gids={3002}
D/AndroidRuntime( 342): Shutting down VM
D/dalvikvm( 342): GC_CONCURRENT freed 102K, 69% free 319K/1024K, external 0K/0K, paused 1ms+1ms
D/dalvikvm( 342): Debugger has detached; object registry had 1 entries
I/AndroidRuntime( 342): NOTE: attach of thread 'Binder Thread #3' failed
W/dalvikvm( 350): Exception Ljava/lang/NullPointerException; thrown while initializing Lcom/gobernador/APP;
W/dalvikvm( 350): Class init failed in newInstance call (Lcom/gobernador/APP;)
D/AndroidRuntime( 350): Shutting down VM
W/dalvikvm( 350): threadid=1: thread exiting with uncaught exception (group=0x40015560)
I/ARMAssembler( 83): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x444ea6f0:0x444ea8a8] in 1886492 ns
E/AndroidRuntime( 350): FATAL EXCEPTION: main
E/AndroidRuntime( 350): java.lang.ExceptionInInitializerError
E/AndroidRuntime( 350): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 350): at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime( 350): at android.app.Instrumentation.newApplication(Instrumentation.java:957)
E/AndroidRuntime( 350): at android.app.Instrumentation.newApplication(Instrumentation.java:942)
E/AndroidRuntime( 350): at android.app.LoadedApk.makeApplication(LoadedApk.java:461)
E/AndroidRuntime( 350): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
E/AndroidRuntime( 350): at android.app.ActivityThread.access$2200(ActivityThread.java:117)
E/AndroidRuntime( 350): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
E/AndroidRuntime( 350): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 350): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 350): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( 350): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 350): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 350): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 350): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 350): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 350): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 350): at com.gobernador.ReaderWriter.<init>(ReaderWriter.java:20)
E/AndroidRuntime( 350): at com.gobernador.APP.<clinit>(APP.java:11)
E/AndroidRuntime( 350): ... 16 more
W/ActivityManager( 83): Force finishing activity com.gobernador/.TopPage
PER 허용 대답은 : 내가 쓴 코드는 순서가 있었다. 위의 줄을 포함하는 생성자를 theContext = this;
뒤에 줄로 이동했습니다.
APP 란 무엇입니까? 당신이 null이 아니라고 확신합니까? – kosa
배열을 초기화 할 필요가 없으므로 선언이면 충분합니다. –
APP는 [this] (http://stackoverflow.com/questions/987072/using-application-context-everywhere) 일하는 방식과 매우 유사합니다. 내가 이것을하는 방식을 재 설계해야 하는가? – gobernador