2011-12-07 5 views
1
12-07 11:25:34.290: E/AndroidRuntime(9177): FATAL EXCEPTION: AsyncTask #2 
12-07 11:25:34.290: E/AndroidRuntime(9177): java.lang.RuntimeException: An error occured while executing doInBackground() 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.lang.Thread.run(Thread.java:1096) 
12-07 11:25:34.290: E/AndroidRuntime(9177): Caused by: java.lang.NullPointerException 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at com.UserLogin.Onaroundyou$getOnaroundyou.doInBackground(Onaroundyou.java:198) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at com.UserLogin.Onaroundyou$getOnaroundyou.doInBackground(Onaroundyou.java:1) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-07 11:25:34.290: E/AndroidRuntime(9177):  ... 4 more 

json 배열을 내 sqlite 데이터베이스에 삽입하려고 할 때이 Nullpoint 예외 오류가 발생합니다. on Lline 198 jsonarray에서 값을 콘텐츠 값에 추가하고 있습니다.

이 줄까지 json 응답의 값을 얻고 있습니다. 로그에 키와 값을 인쇄했습니다. 내가 널 값을 얻고 있는지 확인했다. 그러나 가치는 잘 나타나고 로그에서 그 값을 볼 수 있습니다. 내 deguger가 아래 라인에 들어가면 나는 gettng 오류입니다. 한번만 도와주세요.null 포인터 sqlite 데이터베이스에 json 배열을 삽입하는 동안 예외

Evalues.put(InsertData.MyName,JSonArray1.getJSONObject(i).getString("MyName")); 

미리 감사드립니다.

 private TextView tv; 
     String str, Username, Eresult,Password; 
     ProgressDialog dialog1; 
     DatabaseHelper InsertEData; 
     String attributeId ; 
     Context mContext = this; 
     SQLiteDatabase Edb ; 
     JSONObject MyUserJsonObject; 

    protected Void doInBackground(String... params) { 
     // TODO Auto-generated method stub 
       HttpClient httpclient = new DefaultHttpClient(); 
       // Dh.getWritableDatabase(); 

       String text1 = getString(R.string.site_name); 
       String Url=text1+"Details"; 

       HttpPost httppost = new HttpPost(Url); 


       try { 
       HttpResponse responseGet = httpclient.execute(httppost); 
       HttpEntity entity = responseGet.getEntity(); 
       if (entity != null) { 
        InputStream inputStreamResponse = entity.getContent(); 
        Eresult = convertStreamToString(inputStreamResponse); 
        System.out.println(Eresult); 
        Edb= InsertEData.getWritableDatabase(); 

        ContentValues Evalues = new ContentValues(); 
        Evalues.clear(); 
        MyUserJsonObject = new JSONObject(Eresult); 

        JSONObject menuObject = MyUserJsonObject.getJSONObject("UserDetails"); 
        attributeId = menuObject.getString("login"); 

        System.out.println("attribute "+attributeId); 
        if (attributeId.equals("success")) { 
         JSONObject EObject = menuObject.getJSONObject("Ulist"); 
         JSONArray EArray = EObject.getJSONArray("List"); 
         System.out.println(EArray); 
         System.out.println(EArray.length()); 
         for (int i = 0; i < EArray.length(); i++) {        
          //System.out.println(EArray.getJSONObject(0).getString("Name").toString()); 

          Evalues.put(InsertEData.EName, EArray.getJSONObject(i).getString("MyName")); 
          Evalues.put(InsertEData.ELocation, EArray.getJSONObject(i).getString("Location")); 
          Evalues.put(InsertEData.ETotal, EArray.getJSONObject(i).getString("Total")); 
          Evalues.put(InsertEData.Eimage, EArray.getJSONObject(i).getString("Image")); 
          Edb.insert(InsertEData.ESLIST, null, Evalues); 

         } 
         Evalues.clear(); 

         inputStreamResponse.close(); 

        }else { 
         System.out.println("Unable to load page - " + responseGet.getStatusLine()); 
        } 
       } 
       else 
        System.out.println("Entity Null"); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       System.out.println("Network Error"); 
       e.printStackTrace(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 

      return null;} 

답변

0

"왜 이런 일이 일어날 지 알 수 있습니까?"

짧은 대답은 : 일부 개체가 안 null 때문이다. 잠재적 인 범인은 InsertData, JSonArray1 또는 JSonArray1.getJSONObject(i)이 될 수 있습니다.

자세한 내용이 없으면 정확한 원인을 찾아내는 것이 어렵습니다. 문제를 찾으려면 코드를 중단시켜야합니다.

+0

코드가 추가되었습니다. 한 번 확인하십시오. – atluriajith

+0

혼란스러워. "MyName"또는 "Name"입니까? 나는 당신의 코드에서 첫 번째를 보지 못한다. 반면에 당신은 에러를 일으키는 코드 라인이 그렇다고 주장한다. 또한, for 루프에서'EventArray'와'EArray'를 섞어 놓은 것처럼 보입니다. 나는 어디에서나 선언/초기화 된 것을 보지 못합니다. 동일한 변수가 여러 변수에 사용됩니다. 마지막으로, 당신은 끊임없이 실제 내용에 관심이 있다면 거의 이해가 루프에있는 첫 번째 JSONObject 밖으로 인쇄 ... –

+0

그것은 MyName, EArray 그리고 난 그냥 여부를 확인하는 첫 번째 JSONObject를 인쇄 해요 가치가오고있다. 여기에 복사 된 doinbackground 메소드 만 게시했습니다. – atluriajith

1

배열이 null 값을 반환하는 것처럼 보입니다.

로그를 유지하고 콘솔을 확인하십시오.

+0

하지만 값을 인쇄하려고 할 때 logcat에 들어갑니다. System.out.println (JSonArray1.getJSONObject (i) .getString ("MyName")) – atluriajith

+0

나중에 그 값이 표시됩니까? –

+0

예. 값을 보여줍니다. – atluriajith

관련 문제