안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요!
핵심만 말씀드려서
Info라는 클래스가 존재하고
Info 클래스 안에 exist라는 퍼블릭 변수가 존재합니다.
다른 클래스에서 " Info[] info = new Info[8] " 요런식으로 선언을 하고
함수에서 info[0].exist = 1; 이런 식으로 사용할려고 했는데
이부분에서 널포인트 익셉션이 발생합니다.
이 info 클래스를 건들이는 일(함수든 변수든) 다 이런 에러가 발생하네요
왜 그럴까요??ㅜㅜ
고수님들의 의견 부탁드립니다^^
05-08 08:28:06.512: ERROR/AndroidRuntime(584): Uncaught handler: thread main exiting due to uncaught exception
05-08 08:28:06.552: ERROR/AndroidRuntime(584): java.lang.NullPointerException
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at jolp.imsick.CompassView.onDraw(CompassView.java:139)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6536)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1527)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1525)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6539)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1527)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1525)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6539)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.draw(ViewRoot.java:1349)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.os.Looper.loop(Looper.java:123)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.app.ActivityThread.main(ActivityThread.java:4338)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at java.lang.reflect.Method.invoke(Method.java:521)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at dalvik.system.NativeStart.main(Native Method)
139번째 줄에 있는코드가 info[0].exist = 1; 입니다 ㅜㅜ
핵심만 말씀드려서
Info라는 클래스가 존재하고
Info 클래스 안에 exist라는 퍼블릭 변수가 존재합니다.
다른 클래스에서 " Info[] info = new Info[8] " 요런식으로 선언을 하고
함수에서 info[0].exist = 1; 이런 식으로 사용할려고 했는데
이부분에서 널포인트 익셉션이 발생합니다.
이 info 클래스를 건들이는 일(함수든 변수든) 다 이런 에러가 발생하네요
왜 그럴까요??ㅜㅜ
고수님들의 의견 부탁드립니다^^
05-08 08:28:06.512: ERROR/AndroidRuntime(584): Uncaught handler: thread main exiting due to uncaught exception
05-08 08:28:06.552: ERROR/AndroidRuntime(584): java.lang.NullPointerException
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at jolp.imsick.CompassView.onDraw(CompassView.java:139)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6536)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1527)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1525)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6539)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1527)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.drawChild(ViewGroup.java:1525)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1257)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.View.draw(View.java:6539)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.draw(ViewRoot.java:1349)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.os.Looper.loop(Looper.java:123)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at android.app.ActivityThread.main(ActivityThread.java:4338)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at java.lang.reflect.Method.invoke(Method.java:521)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-08 08:28:06.552: ERROR/AndroidRuntime(584): at dalvik.system.NativeStart.main(Native Method)
139번째 줄에 있는코드가 info[0].exist = 1; 입니다 ㅜㅜ
위 구문은 C++ 과 달리, Java 에서는 Info 라는 객체 8개를 만드는게 아닙니다.
Info 객체의 레퍼런스를 담을 8개 짜리 배열을 만들고, null 포인터 8개가 채워집니다.
그다음에 바로 info[0].exist = 1; 이렇게 하시면 당연히 nullPointerException 이 나지요.
for(int i=0; i<info.length; ++i) { info[i] = new Info(); } 를 Info[] info = new Info[8]; 다음에 넣어주세욥