안드로이드 개발 질문/답변
(글 수 45,052)
E/AndroidRuntime( 638): FATAL EXCEPTION: main
E/AndroidRuntime( 638): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.yjlim.face/com.yjlim.face.FaceMain}: java.lang.NullPointerException
E/AndroidRuntime( 638): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 638): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 638): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 638): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 638): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 638): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 638): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 638): at java.lang.reflect.Method.invokeNative(NativeMethod)
E/AndroidRuntime( 638): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 638): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 638): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 638): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 638): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 638): at com.yjlim.face.FaceMain.onCreate(FaceMain.java:213)
E/AndroidRuntime( 638): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 638): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 638): ... 11 more
URL imgUrl = new URL("http://www.thecaptainsmemos.com/wp-content/uploads/2009/03/09_lucia-dvorska_05.jpg"); HttpURLConnection conn = (HttpURLConnection) imgUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
Bitmap bm = bmp.copy(Config.ARGB_8888, true);
Paint pnt = new Paint(Paint.ANTI_ALIAS_FLAG);
pnt.setColor(Color.RED);
Canvas canvas = new Canvas(bm);
canvas.drawCircle(145, 127, 2, pnt);
iv.setImageBitmap(bm);
이미지는 어찌 올려야할지 몰라서 그냥 텍스트로 가져왔습니다.
현재 위에 코드를 썼을 경우 나오는 에러 메시지 입니다.
문제는 이 에러가 나올때도 있지만 정상적으로 실행 될때도 있다는 겁니다..
코드를 간단하게 설명하자면
url의 이미지를 비트맵 형식(bmp)으로 가져와서
비트맵 bm에다 새로 카피한 후 캔버스로 그 이미지에 좌표에 점을 찍고
ImageView인 iv에서 보여주는 소스 입니다.
에러메시지가 뜨면 계속 뜨고 코드를 수정하고 다시 컴파일 하면 되다가 두번째에선 안되는거 같습니다.
에러메시지에서 가리키는 com.yjlim.face.FaceMain.onCreate(FaceMain.java:213) 이부분은
코드에서 Bitmap bm = bmp.copy(Config.ARGB_8888, true); 이부분이며
뭐때문에 이런 에러가 뜨는지 엄청 궁금합니다.
처음에는 카피를 안하고 바로 Canvas canvas = new Canvas(bmp); 이런 식으로 했었는데
이렇게 하니까 무족건 위와 같은 에러가 나서 카피해서 하니까 문제 없이 됐었는데
이번엔 되다가 안되다가 해서 이렇게 글을 올립니다
무엇이 문제 인지 알려주세요 ㅜㅜ 부탁드립니다..
2011.01.20 14:50:39
bmp가 null이 아니라면
Bitmap bm = bmp.copy(Config.ARGB_8888, true);
요기에서 Config를 생성해서 넣어보세요.
new Config나 변수를 생성해서요.
copy함수안에 Config객체를 넣어야지 지금 그냥 Config.enum을 넣으신듯하네요.




그냥 inputStream은 네트웍 상태에 따라 오류가 발생할수도 있다고 하더군요...