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

안드로이드 db 문제!!

0 추천

E/ViewRootImpl: sendUserActionEvent() mView == null
E/AndroidRuntime: FATAL EXCEPTION: Thread-78653
                  Process: com.ebookfrenzy.reality, PID: 19207
                  java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
                      at com.ebookfrenzy.reality.controlMysql.show(controlMysql.java:104)
                      at com.ebookfrenzy.reality.controlMysql.run(controlMysql.java:98)

 

안드로이드에서 사용자가 입력된 값을 php로 보낸후 db에 insert 시키는 작업인데요, 안드로이드에서 이런 에러가 발생했습니다. 어떤 점이 문제일까요??

아래는 안드로이드 코드에서 에러가 발생한 코드입니다. 색칠된 부분에서 발생되었습니다.

 public void run()
    {

        Log.e("E", gettype +","+url.toString());
        super.run();

        if(active)
        {
            StringBuilder jsonHtml = new StringBuilder();

            try
            {
                URL phpUrl = new URL(url);
                HttpURLConnection con = (HttpURLConnection)phpUrl.openConnection();

                if(con != null)
                {
                    con.setConnectTimeout(10000);
                    con.setUseCaches(false);

                    if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
                    {
                        BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
                        while(true)
                        {
                            String line = br.readLine();

                            if(line == null)
                                break;

                            jsonHtml.append(line+"\n");
                        }
                        br.close();
                    }
                    con.disconnect();
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

            show(jsonHtml.toString());
        }
    }

    void show(final String result)
    {
        mHandler.post(new Runnable()
        {

            @Override
            public void run()
            {
                Log.e("EE", gettype +"," +result);

                switch(gettype)
                {

                    case 1:
                            Log.e("결과", "값->"+result.toString());
                            ChkId.chkidResult(result);
                            break;


                    case 2:
                            Log.e("결과", "값->"+result.toString());
                            Login.regist_result(result);
                            break;

                    default:
                        break;
                }


            }
        });
    }

답변부탁드립니다!

알파고 (4,320 포인트) 님이 2017년 3월 9일 질문
널포인트면 핸들러저거 객체생성해서 포스트보내봐여

1개의 답변

0 추천
mHandler 변수가 null 인것 같습니다.

해당 변수를 셋팅하는 부분이 타기 전에 show()가 호출된것으로 보여지네요.
바램 (19,650 포인트) 님이 2017년 3월 10일 답변
코드상 그렇게 진행될 수는 없어보이는데.. 어떻게 그렇게 되는지 모르겠습니다;;
...