2013-10-29 6 views
1

새로운 안드로이드 프로그래밍에 나는 새로운 무엇이 오류를 트리거 핀 포인트.치명적인 예외 : asynctask # 1 doInBackground

10-29 02:34:17.989: E/AndroidRuntime(853): FATAL EXCEPTION: AsyncTask #1 
10-29 02:34:17.989: E/AndroidRuntime(853): java.lang.RuntimeException: An error occured while executing doInBackground() 
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.lang.Thread.run(Thread.java:841) 
10-29 02:34:17.989: E/AndroidRuntime(853): Caused by: java.lang.NullPointerException 
10-29 02:34:17.989: E/AndroidRuntime(853): at com.agf.tripassigner.CreateTripActivity$CreateTrip.doInBackground(CreateTripActivity.java:104) 
10-29 02:34:17.989: E/AndroidRuntime(853): at com.agf.tripassigner.CreateTripActivity$CreateTrip.doInBackground(CreateTripActivity.java:1) 
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
10-29 02:34:17.989: E/AndroidRuntime(853): ... 4 more 
10-29 02:34:18.848: W/EGL_emulation(853): eglSurfaceAttrib not implemented 
10-29 02:34:19.909: E/WindowManager(853): Activity com.agf.tripassigner.CreateTripActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41844d20 V.E..... R......D 0,0-456,144} that was originally added here 
10-29 02:34:19.909: E/WindowManager(853): android.view.WindowLeaked: Activity com.agf.tripassigner.CreateTripActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41844d20 V.E..... R......D 0,0-456,144} that was originally added here 
10-29 02:34:19.909: E/WindowManager(853): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345) 
10-29 02:34:19.909: E/WindowManager(853): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239) 
10-29 02:34:19.909: E/WindowManager(853): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
10-29 02:34:19.909: E/WindowManager(853): at android.app.Dialog.show(Dialog.java:281) 
10-29 02:34:19.909: E/WindowManager(853): at com.agf.tripassigner.CreateTripActivity$CreateTrip.onPreExecute(CreateTripActivity.java:80) 
10-29 02:34:19.909: E/WindowManager(853): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
10-29 02:34:19.909: E/WindowManager(853): at android.os.AsyncTask.execute(AsyncTask.java:534) 
10-29 02:34:19.909: E/WindowManager(853): at com.agf.tripassigner.CreateTripActivity$1.onClick(CreateTripActivity.java:58) 
10-29 02:34:19.909: E/WindowManager(853): at android.view.View.performClick(View.java:4240) 
10-29 02:34:19.909: E/WindowManager(853): at android.view.View$PerformClick.run(View.java:17721) 
10-29 02:34:19.909: E/WindowManager(853): at android.os.Handler.handleCallback(Handler.java:730) 
10-29 02:34:19.909: E/WindowManager(853): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-29 02:34:19.909: E/WindowManager(853): at android.os.Looper.loop(Looper.java:137) 
10-29 02:34:19.909: E/WindowManager(853): at android.app.ActivityThread.main(ActivityThread.java:5103) 
10-29 02:34:19.909: E/WindowManager(853): at java.lang.reflect.Method.invokeNative(Native Method) 
10-29 02:34:19.909: E/WindowManager(853): at java.lang.reflect.Method.invoke(Method.java:525) 
10-29 02:34:19.909: E/WindowManager(853): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
10-29 02:34:19.909: E/WindowManager(853): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-29 02:34:19.909: E/WindowManager(853): at dalvik.system.NativeStart.main(Native Method) 

이러한 클래스의 AsyncTask를 내 코드입니다 :

class CreateTrip extends AsyncTask<String, String, String> { 
     /** 
     * Before Sttarting Background thread Show Progress Dialog 
     */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(CreateTripActivity.this); 
      pDialog.setMessage("Creating Trip..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

     } 
     /** 
     * Creating Trip 
     */ 
     protected String doInBackground(String... args) { 
      String plate = inputPlate.getText().toString(); 
      String customer = inputCustomer.getText().toString(); 
      String area = inputArea.getText().toString(); 
      String driver = inputDriver.getText().toString(); 

      //Building parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("plate", plate)); 
      params.add(new BasicNameValuePair("customer", customer)); 
      params.add(new BasicNameValuePair("area", area)); 
      params.add(new BasicNameValuePair("driver", driver)); 

      //getting JSON Object 
      // Note that create trip url accepts post method 
      JSONObject json = jsonParser.makeHttpRequest(url_create_trip, "POST", params); 

      // check log cat for response 
      Log.d("Create Response", json.toString()); 

      // check for success tag 
      try{ 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1){ 
        //successfully created trip 
        Intent i = new Intent(getApplicationContext(), CreateTripActivity.class); 
        startActivity(i); 

        //closing this screen 
        finish(); 

       }else { 
        // failed to create trip 
       } 
      } catch (JSONException e){ 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     /** 
     * After Completing background task Dismiss the progress Dialog 
     */ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once done 
      pDialog.dismiss(); 

     } 
    } 
} 

도와주세요 : ((

+0

줄 104'CreateTripActivity.java'는 무엇입니까? – Raghunandan

+0

여기 NullPointerException이 있습니다 : 원인 : java.lang.NullPointerException 10-29 02 : 34 : 17.989 : E/AndroidRuntime (853) : com.agf.tripassigner.CreateTripActivity $ CreateTrip.doInBackground (CreateTripActivity.java:104))', 104 행의 파일을 확인하십시오. 사용하기 전에 어떤 변수가 초기화되지 않았을 수 있습니다. – user2652394

+0

대화 상자에서 .cancel()을 사용해야하고 .dismiss()가 아니기 때문에 WINDOW LEAKED 오류가 발생합니다. – Tejas

답변

1
// try this way 
class CreateTrip extends AsyncTask { 
     ProgressDialog pDialog; 
     /** * Before Sttarting Background thread Show Progress Dialog */ 
     @Override protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(CreateTripActivity.this); 
      pDialog.setMessage("Creating Trip..."); pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); pDialog.show(); 
     } 
     /** 
     * Creating Trip 
     */ 
     protected String doInBackground(String... args) { 
      String plate = inputPlate.getText().toString(); 
      String customer = inputCustomer.getText().toString(); 
      String area = inputArea.getText().toString(); 
      String driver = inputDriver.getText().toString(); 

      //Building parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("plate", plate)); 
      params.add(new BasicNameValuePair("customer", customer)); 
      params.add(new BasicNameValuePair("area", area)); 
      params.add(new BasicNameValuePair("driver", driver)); 

      //getting JSON Object 
      // Note that create trip url accepts post method 
      JSONObject json = jsonParser.makeHttpRequest(url_create_trip, "POST", params); 

      // check log cat for response 
      Log.d("Create Response", json.toString()); 

      // check for success tag 
      try{ 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1){ 
        // success to create trip 
        return "1"; 
       }else { 
        return "0"; 
        // failed to create trip 
       } 
      } catch (JSONException e){ 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     /** 
     * After Completing background task Dismiss the progress Dialog 
     */ 
     protected void onPostExecute(String result) { 
      // dismiss the dialog once done 
      pDialog.dismiss(); 
      if(result!=null && result.equals("1")){ 
       // success to create trip 
       Intent i = new Intent(getApplicationContext(), CreateTripActivity.class); 
       startActivity(i); 
       finish(); 
      }else{ 
       // failed to create trip 
      } 

     } 
    } 
+0

하지만 op 코드에서 NPE가 발생하는 이유는 무엇입니까? – Raghunandan

+0

@Raghunanadan NPE Log.d ("Create Response", json.toString());가 json 일 수 있습니다. null 일 수 있습니다. –

+0

bcz doInBackground(). doInBackground()를 시작할 수 없습니다. doInBackground()에서 ui 작업을 시작한 UI 스레드에서 doInBackground()가 실행됩니다. –

5

에서 작업을 관련 UI를 수행하지 마십시오 나는이 오류를 데 doInBackgroungd() 방법입니다. 결과를 onPostExecute()으로 반환 한 다음 시작 활동 코드를 작성하십시오.

/** 
    * After Completing background task Dismiss the progress Dialog 
    */ 
    protected void onPostExecute(String result) { 
     // dismiss the dialog once done 
     pDialog.dismiss(); 
     if(result!=null && result.equals("1")){ 
      // success to create trip 
      Intent i = new Intent(getApplicationContext(), CreateTripActivity.class); 
      startActivity(i); 
      finish(); 
     }else{ 
      // failed to create trip 
     } 

    } 
관련 문제