2014-06-05 11 views
0

본인 및 기타 관련 게시물을 보았습니다. 오류가 doInBackground 메서드에 있음을 이해하고 있으며 실수가 발생했을 때 이해하지만 어떤 부분을 이해할 수 있습니까? 코드를 변경하거나 onPostExecute 메서드를 전달해야합니다. 누군가 코드를 변경해야하는 이유가 무엇인지 알 수 있습니다. 감사합니다. doInBackground 방법 등java.lang.RuntimeException : doInBackground() 실행 중 오류가 발생했습니다.

protected String doInBackground(String... args) { 
     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     // getting JSON string from URL 
     JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); 

     // Check your log cat for JSON response 
     Log.d("All products:",json.toString()); //141 line 

     try { 
      // Checking for SUCCESS TAG 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // products found 
       // Getting Array of Products 
       products = json.getJSONArray(TAG_CLASSES); 

       // looping through All Products 
       for (int i = 0; i < products.length(); i++) { 
        JSONObject c = products.getJSONObject(i); 

        // Storing each json item in variable 
        String id = c.getString(TAG_PID); 
        String name = c.getString(TAG_NAME); 

        // creating new HashMap 
        HashMap<String, String> map = new HashMap<String, String>(); 

        // adding each child node to HashMap key => value 
        map.put(TAG_PID, id); 
        map.put(TAG_NAME, name); 

        // adding HashList to ArrayList 
        productsList.add(map); 
       } 
      } else { 
       // no products found 
       // Launch Add New product Activity 
       Intent i = new Intent(getApplicationContext(),NewProductActivity.class); 
       // Closing all previous activities 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog after getting all products 
     pDialog.dismiss(); 
     // updating UI from Background Thread 
     runOnUiThread(new Runnable() { 
      public void run() { 
       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       ListAdapter adapter = new SimpleAdapter(
         AllProductsActivity.this, productsList, 
         R.layout.list_item, new String[] { TAG_PID, 
           TAG_NAME}, 
         new int[] { R.id.id, R.id.name }); 
       // updating listview 
       setListAdapter(adapter); 
      } 
     }); 

    } 

} 

의 코드는 다음과 다음은 오류

입니다
06-05 20:06:49.454: E/Buffer Error(1981): Error converting result  java.lang.NullPointerException: lock == null 
06-05 20:06:49.509: E/JSON Parser(1981): Error parsing data org.json.JSONException: End of input at character 0 of 
06-05 20:06:49.584: W/dalvikvm(1981): threadid=10: thread exiting with uncaught exception (group=0xb4da3908) 
06-05 20:06:49.664: E/AndroidRuntime(1981): FATAL EXCEPTION: AsyncTask #1 
06-05 20:06:49.664: E/AndroidRuntime(1981): java.lang.RuntimeException: An error occurred while executing doInBackground() 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at jav a.lang.Thread.run(Thread.java:856) 
06-05 20:06:49.664: E/AndroidRuntime(1981): Caused by: java.lang.NullPointerException 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at com.panos.appphpconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:141) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at com.panos.appphpconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:1) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
06-05 20:06:49.664: E/AndroidRuntime(1981):  ... 4 more 
06-05 20:07:03.554: W/Trace(1981): Unexpected value from nativeGetEnabledTags: 0 
+0

141 행에 NullPointerException이 있습니다. 141 행은 무엇입니까? – eternay

+0

@eternay Log.d ("모든 제품 :", json.toString()); , 나는 노트와 코드를 가지고있다. – user3636948

+0

한 가지 주석 만 있지만 문제의 원인은 아니다. AsyncTask의 onPostExecute() 메서드는 UI 스레드에서 실행 중입니다. AsyncTask의 onPostExecute() 메소드로 자동으로 수행되기 때문에 runOnUIThread() 메소드로 새 스레드를 생성하고 실행할 필요가 없다. – eternay

답변

1

오브제 json가 null 라인 (141)에 해당 파서가 할 수있는 의미, 해석 에러가 당신의 객체를 읽지 않는다.이 경우 null을 반환한다.

다음 줄에서는 json 개체 (json.toString())를 사용하려고 시도하고 NullPointerException을 얻습니다.

JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); 

그 라인이 null 객체를 반환

은 줄에 구문 분석하려고 개체에서보세요.

관련 문제