2014-04-19 66 views
0

我有一個AsyncTask,它可以完成一些工作並返回一個布爾值。如何先執行然後從AsyncTask返回值?

private class SyncSaleable extends AsyncTask<ItemSaleable, Void, Boolean>{ 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(ChooseState.this); 
      pDialog.setMessage("Please wait..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     @Override 
     protected Boolean doInBackground(ItemSaleable... params) { 
      // TODO Auto-generated method stub 

      JSONObject syncJSON = userFunctions.setToSaleable(params[0]); 
      if(syncJSON.has("success")) 
       return true; 

      return false; 
     } 

     @Override 
     protected void onPostExecute(Boolean result) { 
      // TODO Auto-generated method stub 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 
     } 

我不知道我目前正在執行這個正確的方法。我爲什麼,我說,這是因爲onPreExecuteonPostExecute沒有執行,因爲在缺少對話的進展這樣

boolean state = new SyncTransToDealer().execute(item).get(); 
if(state){ 
    //Do some work here 
} 

執行此。

+0

.execute(item).get()的含義是什麼; ?? – Riser

+0

我從這裏提出的一個問題中看到它,它返回了我從AsyncTask中需要的布爾值。我需要看看米歇爾在下面提出的建議 –

回答

1

您應使用此代碼

if(state){ 
    //Do some work here 
} 

onPostExecute

if(result){ 
//Do some work here 
} 
onCreat或其他方法,你正在使用

也只有這個new SyncTransToDealer().execute(item)。確保你已經提供了相關權限manifest

相關問題