2015-05-31 69 views
1

我得到一個「OnPostExecute方法永遠不會使用」的錯誤,因此我的對話框永遠不會關閉,不知道我的錯誤在哪裏。我確定它在括號裏有一個錯誤,但我一直試圖弄清楚它的一段時間,但我不能,在這種情況下可能有一雙新的眼睛可以幫助。Onpostexecute方法從來沒有使用

public void onCreate(Bundle savedInstanceState) { 
 
      super.onCreate(savedInstanceState); 
 

 
      setContentView(R.layout.activity_display_all_bets); 
 

 

 
      name = (getIntent().getExtras().getString("user")).toLowerCase(); 
 
      Log.d("name", name); 
 
      // Hashmap for ListView 
 
      bet = new ArrayList<HashMap<String, String>>(); 
 

 
      // Loading products in Background Thread 
 
      new LoadAllGames().execute(); 
 

 
     } 
 
      /** 
 
      * Background Async Task to Load all product by making HTTP Request 
 
      */ 
 
      class LoadAllGames extends AsyncTask<String, String, String> { 
 
       private String id; 
 
       private String stake; 
 
       private String user; 
 
       private String returns; 
 
       private String teams; 
 
       private String status; 
 

 

 
       // *//** 
 
       // * Before starting background thread Show Progress Dialog 
 
       // *//* 
 
       @Override 
 
       protected void onPreExecute() { 
 
        super.onPreExecute(); 
 
        pDialog = new ProgressDialog(DisplayAllBets.this); 
 
        pDialog.setMessage("Loading Games. Please wait..."); 
 
        pDialog.setIndeterminate(false); 
 
        pDialog.setCancelable(false); 
 
        pDialog.show(); 
 
       } 
 

 
       // *//** 
 
       // * getting All products from url 
 
       // *//* 
 
       protected String doInBackground(String... args) { 
 
        // Building Parameters 
 
        HttpClient client = new DefaultHttpClient(); 
 
        HttpPost post = new HttpPost(url_all_games); 
 
        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
 
        params.add(new BasicNameValuePair("email", name)); 
 
        try { 
 
         post.setEntity(new UrlEncodedFormEntity(params)); 
 
        } catch (IOException ioe) { 
 
         ioe.printStackTrace(); 
 
        } 
 
        try { 
 
         HttpResponse response = client.execute(post); 
 
         Log.d("Http Post Response:", response.toString()); 
 
         HttpEntity httpEntity = response.getEntity(); 
 
         InputStream is = httpEntity.getContent(); 
 
         JSONObject jObj = null; 
 
         String json = ""; 
 
         try { 
 
          BufferedReader reader = new BufferedReader(new InputStreamReader(
 
            is, "iso-8859-1"), 8); 
 
          StringBuilder sb = new StringBuilder(); 
 
          String line = null; 
 
          while ((line = reader.readLine()) != null) { 
 

 
           if (!line.startsWith("<", 0)) { 
 
            if (!line.startsWith("(", 0)) { 
 
             sb.append(line + "\n"); 
 
            } 
 
           } 
 
          } 
 

 
          is.close(); 
 
          json = sb.toString(); 
 
          json = json.substring(json.indexOf('{')); 
 
          Log.d("sb", json); 
 

 
         } catch (Exception e) { 
 
          Log.e("Buffer Error", "Error converting result " + e.toString()); 
 
         } 
 

 
         // try parse the string to a JSON object 
 
         try { 
 
          jObj = new JSONObject(json); 
 
         } catch (JSONException e) { 
 
          Log.e("JSON Parser", "Error parsing data " + e.toString()); 
 
         } 
 

 
         // return JSON String 
 
         Log.d("json", jObj.toString()); 
 
         try { 
 
          allgames = jObj.getJSONArray(TAG_BET); 
 
          Log.d("allgames", allgames.toString()); 
 
          // looping through All Products 
 
          for (int i = 0; i < allgames.length(); i++) { 
 
           JSONObject c = allgames.getJSONObject(i); 
 

 
           // Storing each json item in variable 
 
           String id = c.getString(TAG_ID); 
 
           String user = c.getString(TAG_USER); 
 
           String returns = c.getString(TAG_RETURNS); 
 
           String stake = c.getString(TAG_STAKE); 
 
           String status = c.getString(TAG_STATUS); 
 
           String Teams = c.getString(TAG_TEAMS); 
 
           Log.d("id", id); 
 
           Log.d("user", user); 
 
           Log.d("returns", returns); 
 
           Log.d("stake", stake); 
 
           Log.d("status", status); 
 
           Log.d("teams", Teams); 
 

 

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

 
           // adding each child node to HashMap key => value 
 
           map.put(TAG_ID, id); 
 
           map.put(TAG_TEAMS, Teams); 
 
           map.put(TAG_USER, user); 
 
           map.put(TAG_RETURNS, returns); 
 
           map.put(TAG_STAKE, stake); 
 
           map.put(TAG_STATUS, status); 
 

 

 
           // adding HashList to ArrayList 
 
           bet.add(map); 
 
          } 
 

 

 
         } catch (JSONException e) { 
 
          e.printStackTrace(); 
 
         } 
 
        } catch (IOException ioe) { 
 
         ioe.printStackTrace(); 
 
        } 
 

 

 
        return ""; 
 
       } 
 

 
       
 
       @Override 
 
       protected void onPostExecute() { 
 
        // dismiss the dialog after getting all products 
 
        // updating UI from Background Thread 
 
        pDialog.dismiss(); 
 

 

 
       } 
 

 
      } 
 

 

 
      @Override 
 
      public boolean onCreateOptionsMenu(Menu menu) { 
 
       // Inflate the menu; this adds items to the action bar if it is present. 
 
       getMenuInflater().inflate(R.menu.menu_display_all_bets, menu); 
 
       return true; 
 
      } 
 

 
      @Override 
 
      public boolean onOptionsItemSelected(MenuItem item) { 
 
       // Handle action bar item clicks here. The action bar will 
 
       // automatically handle clicks on the Home/Up button, so long 
 
       // as you specify a parent activity in AndroidManifest.xml. 
 
       int id = item.getItemId(); 
 

 
       //noinspection SimplifiableIfStatement 
 
       if (id == R.id.action_settings) { 
 
        return true; 
 
       } 
 

 
       return super.onOptionsItemSelected(item); 
 
      } 
 
     }

回答

3

您已定義AsyncTask爲,

class LoadAllGames extends AsyncTask<String, String, String> 

對於那些,你應該有一個onPostExecute(String)

@Override 
    protected void onPostExecute(String param) { 
    // dismiss the dialog after getting all products 
    // updating UI from Background Thread 
    pDialog.dismiss(); 
}    

應該工作。

相關問題