2011-12-07 18 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レスポンスの値を得ています。私はキーと値をログに出力しました。私はnull値を取得しているかどうかを確認します。しかし、値はうまく来て、私はそれらをログに見ることができます。下の行に入っている私の脱水者が、私は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

関連する問題