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

핸들러에 substring관련 문의 드립니다. [closed]

0 추천

센서 데이터 값을 받아서 분배 할려고 substring을 사용하였는데 런에서 에러 문구가 떠서 문의드립니다.

 mHandler = new Handler(){
            public void handleMessage(Message msg){
                if(msg.what == MESSAGE_READ){
                    String readMessage = null;
                    Bundle bundle = msg.getData();
                    String str0 = bundle.getString("");
                    String str1 = str0.substring(0, 5);
                    String str2 = str0.substring(6, 11);
                    String str3 = str0.substring(12, 17);

                    mRead_X.setText(str1.concat(" "));
                    mRead_Y.setText(str2.concat(" "));
                    mRead_Z.setText(str3.concat(" "));

                    try {
                        readMessage = new String((byte[]) msg.obj, "UTF-8");
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    mReadBuffer.setText(readMessage);
                }

코드는 이렇게 작성하였고 

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.mcuhq.simplebluetooth, PID: 13890
                  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.substring(int, int)' on a null object reference
                      at com.mcuhq.simplebluetooth.MainActivity$1.handleMessage(MainActivity.java:95)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:7406)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

런에서는 이렇게 떳는데 str1에 문제가 있다고하는데 무슨 문제인지 모르겠습니다.

질문을 종료한 이유: try에 Bundle bundle = msg.getData(); 등을 입력하고 str0을 초기화 쪽에 입력하니 해결되었습니다.
초심자1 (790 포인트) 님이 2018년 4월 25일 질문
초심자1님이 2018년 4월 26일 reshown

1개의 답변

0 추천

str1 이 null 이란 소립니당.

str0 은 bundle.getString("");으로 하셧는데 아마 str0 도 null 일거 같습니다

키값으로 bundle.getString(""); 을 해주셔야 str0에 데이터가 들어갈거 같은데요.. 

poporo (3,960 포인트) 님이 2018년 4월 25일 답변
...