2014-01-20 82 views
0

我嘗試使用AsyncTask註冊用戶。運行應用程序時,它會創建一個用戶並引發這樣的異常。執行doInBackground()時發生錯誤,無法創建會話

01-20 11:57:42.461: D/User Created!(2977): {"message":"Username Successfully Added!","success":1} 
01-20 11:57:42.571: W/dalvikvm(2977): threadid=13: thread exiting with uncaught exception (group=0x40e19438) 
01-20 11:57:42.591: E/AndroidRuntime(2977): FATAL EXCEPTION: AsyncTask #1 
01-20 11:57:42.591: E/AndroidRuntime(2977): java.lang.RuntimeException: An error occured while executing doInBackground() 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.lang.Thread.run(Thread.java:856) 
01-20 11:57:42.591: E/AndroidRuntime(2977): Caused by: java.lang.NullPointerException 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at com.example.rp.Register$CreateUser.doInBackground(Register.java:329) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at com.example.rp.Register$CreateUser.doInBackground(Register.java:1) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
01-20 11:57:42.591: E/AndroidRuntime(2977):  ... 5 more 

這是我的活動的AsyncTask

class CreateUser extends AsyncTask<String, String, String>{ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(Register.this); 
     pDialog.setMessage("Creating User..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... arg0) {  
     int success; 
     try { 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 

      params.add(new BasicNameValuePair("name", name)); 
      params.add(new BasicNameValuePair("email", email)); 
      params.add(new BasicNameValuePair("password", password)); 
      params.add(new BasicNameValuePair("dob", dob)); 
      params.add(new BasicNameValuePair("gender", gender)); 
      params.add(new BasicNameValuePair("mobile", mobile)); 

      Log.d("request!", "starting"); 

      JSONObject json = jsonParser.makeHttpRequest(url_reg, "POST", params); 

      Log.d("Login attempt", json.toString()); 

      success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       Log.d("User Created!", json.toString()); 
       Intent i = new Intent(Register.this, TestTab.class); 
       finish(); 
       startActivity(i); 
       session.createLoginSession("RandB", email); 

       return json.getString(TAG_MESSAGE); 

      } else { 
       showAlertDialog(Register.this, "Registration Error...", "Please register again...", false); 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     pDialog.dismiss(); 
    } 
} 

與用戶創建。我想創建會話並開始新的活動。誰能幫我?

+2

是什麼線329?你也可以;如果你正在顯示因爲我看到一個'showAlertDialog'方法,就從doInbackground顯示一個對話框。同時將startActivity代碼移動到'onPostExecute' – Raghunandan

+1

複製'success'將部分代碼複製到'onPostExecute()' –

+0

將您的代碼啓動會話showDialog移動到'onPostExecute()' –

回答

0

不要在onPostExecute該作品()方法

if (success == 1) { 

       Log.d("User Created!", json.toString()); 
       Intent i = new Intent(Register.this, TestTab.class); 
       finish(); 
       startActivity(i); 
       session.createLoginSession("RandB", email); 
       return json.getString(TAG_MESSAGE); 

      } else { 
       showAlertDialog(Register.this, "Registration Error...", "Please register  again...", false); 

      } 
+0

否,它返回空值異常。 – anuruddhika

+0

@anuruddhika後什麼是行329. – Raghunandan

+0

@Raghunandan session.createLoginSession(「RandB」,email); – anuruddhika

0

變化的任務:

class CreateUser extends AsyncTask<String, String, String>{ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(Register.this); 
     pDialog.setMessage("Creating User..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... arg0) {  
     int success; 
     try { 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 

      params.add(new BasicNameValuePair("name", name)); 
      params.add(new BasicNameValuePair("email", email)); 
      params.add(new BasicNameValuePair("password", password)); 
      params.add(new BasicNameValuePair("dob", dob)); 
      params.add(new BasicNameValuePair("gender", gender)); 
      params.add(new BasicNameValuePair("mobile", mobile)); 

      Log.d("request!", "starting"); 

      JSONObject json = jsonParser.makeHttpRequest(url_reg, "POST", params); 

      Log.d("Login attempt", json.toString()); 

      success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 

       session.createLoginSession("RandB", email); 

       return json.getString(TAG_MESSAGE); 

      } else { 
       return null; 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
      if(result!=null){ 
       Intent i = new Intent(Register.this, TestTab.class); 

       startActivity(i); 
     session.createLoginSession("RandB", email); 
      finish(); 
     }else{ 
showAlertDialog(Register.this, "Registration Error...", "Please register again...", false); 
} 
     pDialog.dismiss(); 
    } 
} 
相關問題