마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

클래스 객체선언 및 사용에 관해서 질문드립니다

0 추천

캡처.JPG 


이러한 구조로 된 소스가 있습니다.
MyView클래스의 touch_start나 무브 업 등의 매소드를 참조하려 하는데
일단 매소드들을 public으로 바꾸어 놨구요.
 
mHandler 함수에서 객체를 생성해서 접근하려 합니다.
MyView test = new MyView(null);
 
이렇게 선언했는데 프로그램이 죽어버립니다.
MyView의 생성자의 인자가 컨텍스트 형으로 되어있습니다.
Log에 뜬 에러 내용은 이와 같습니다.
 
04-24 17:18:41.310: E/AndroidRuntime(11950): FATAL EXCEPTION: main
04-24 17:18:41.310: E/AndroidRuntime(11950): java.lang.NullPointerException
04-24 17:18:41.310: E/AndroidRuntime(11950):  at android.view.ViewConfiguration.get(ViewConfiguration.java:332)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at android.view.View.<init>(View.java:3326)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at com.shj.Test.TestActivity$MyView.<init>(TestActivity.java:135)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at com.shj.Test.TestActivity$1.handleMessage(TestActivity.java:416)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at android.os.Looper.loop(Looper.java:137)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at android.app.ActivityThread.main(ActivityThread.java:4946)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at java.lang.reflect.Method.invokeNative(Native Method)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at java.lang.reflect.Method.invoke(Method.java:511)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
04-24 17:18:41.310: E/AndroidRuntime(11950):  at dalvik.system.NativeStart.main(Native Method)
 
도와주시면 감사드리겠습니다.

 

wassum (260 포인트) 님이 2013년 4월 24일 질문

2개의 답변

0 추천
 
채택된 답변
일단 이미지가 안보입니다.

단순 예상해 보건데 MyView 의 생성자가 context로 되어있다면서

왜 MyView을 생성하실때 null를 집어넣으시나요?? context를 집어 넣으셔야 되는거 아닌가요?

MyView view = new MyView(TestActivity.this); 나 MyView view = new MyView(getApplicationContext());

이렇게 해보세요.
앙스 (1,020 포인트) 님이 2013년 4월 24일 답변
wassum님이 2013년 4월 24일 채택됨
정말 감사드립니다.
바로 적용해보겠습니다
0 추천
일단 소스 올리신게 안보입니다.

 

하지만 생성자에 Context인자가 들어간다고 하였는데 null값을 넘겨줘서 이를 통하여 접근을 하였기 때문에 nullPointerException 이 발생하였습니다.

현재 사용하려는 위치가 Activity를 상속받은 클래스라면 this 를 넘겨주시면 되겠습니다.
사살자 (1,500 포인트) 님이 2013년 4월 24일 답변
정말 감사드립니다!
알아야 할 것이 태산이네요ㅠ_ㅠ
...