안드로이드 개발 질문/답변
(글 수 45,052)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
final String[] realtime_data = result.getContents().split(",");
final graph_qr realtime_graph_start = new graph_qr();
final graph_qr_benchmark benchmark_graph_start = new graph_qr_benchmark();
new Thread(new Runnable(){
public void run() {
try {
result_bitmap = realtime_graph_start.realtime_graph(realtime_data);
realtime_image.post(new Runnable(){
public void run() {
realtime_image.setImageBitmap(result_bitmap);
}
});
} catch (IOException e) { e.printStackTrace(); }
}
}).start();
.....
}
네번째 줄 final String[] realtime_data = result.getContents().split(",") 이 NullPointerException이 발생하는 부분입니다.
항상 발생하는 건 아니고 비교적 빠른 시간 내에 해당 액티비티를 다시 띄웠을 때 4,50퍼센트의 확률로 나타납니다ㅜ
길이가 정해져 있지 않은 문자열을 길이가 정해져 있지 않은 배열에 spilt하는 동작입니다.
어떻게 하면 NullPointerException을 피할 수 있을까요...?
2012.03.21 16:23:03
우선 윗분처럼 Activity가 제대로 종료되었는지..
resultCode가 RESULT_OK 인지..
RESULT_CANCELED는 뒤로가기를 눌르거나 취소 되었을때 하는 행위므로..
---
우선 realTime_data 가 null일때 발생할 수도있고,
아니면 result.getContents() <---가 null인지 알수 없으므로..
if(result.getContents() != null)
{
final String[] realtime_data = result.getContents().split(",");
if(realtime_data != null)
{
final graph_qr realtime_graph_start = new graph_qr();
.....
}).start();
}
.....
}




제가알기로는 onActivityResult는 SUCCESS안에서 동작시켜야하는걸로아는데요...
성공적으로 받아야만 처리하는구문인데 성공인지 실패인지도 모르고 무조건 잘라버리니 확률적으로 에러나는거 같습니다만..
머 추축입니다.
http://blog.naver.com/PostView.nhn?blogId=hisukdory&logNo=50088038280
이것처럼요...