2016-04-20 2 views
1

В моем коде я должен stringRequest Волейбол, который работает отлично, но теперь я хочу использовать progressDialog. У меня есть создать 1 способ поставить progressDialog как этотИспользование одного progressDialog в двух или более строках android stringRequest Volley

private void showProgress(String message) { 
    progressDialog = new ProgressDialog(this); 
    progressDialog.setTitle("Loading Data " + message); 
    progressDialog.setMessage("Please wait..."); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 
} 

и у меня есть эти 2 stringRequest так:

private void fetchDataPoMurni(final String tipe, final String user_id, final String last_date) { 
    showProgress("Murni"); 
    String tag_string_req = "Request Po Dapat"; 
    StringRequest stringRequest = new StringRequest(
     Request.Method.POST, 
     AppConfig.URL_FETCH_REPORT_PO, 
     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       try { 
        JSONObject jsonObject = new JSONObject(response); 
        boolean error = jsonObject.getBoolean("error"); 

        if(!error) { 
         JSONArray resultPo = jsonObject.getJSONArray("result"); 
         for(int i = 0; i < resultPo.length(); i++) { 
          JSONObject result = (JSONObject) resultPo.get(i); 
          String _cabang_id = result.getString("branch_id"); 
          String _area_id = result.getString("areacode"); 
          String _cabang = result.getString("branch_name"); 
          Log.d("FETCHING DATA MURNI: ", _cabang_id + " " + _area_id + " " + _cabang); 
          dataBaseHelper.insertDataPoMurni(new PoModel(_cabang_id.trim(), _area_id.trim(), _cabang.trim())); 
         } 
        } else { 
         String errorMsg = jsonObject.getString("result"); 
         showAlertDialog(errorMsg); 
        } 

       } catch (JSONException e) { 
        showAlertDialog(e.getMessage()); 
       } 

       if (progressDialog != null) { 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
        } 
       } 
      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       showAlertDialog(volleyError.getMessage()); 
       if (progressDialog != null) { 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
        } 
       } 
      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("tipe", tipe); 
       params.put("uid", user_id); 
       params.put("last_date", last_date); 
       return params; 
      } 
     }; 
    AppController.getInstance().addToRequestQueue(stringRequest, tag_string_req); 
} 

и другой запрос:

private void fetchDataPoDapat(final String tipe, final String user_id, final String last_date) { 
    showProgress("Dapat"); 
    String tag_string_req = "Request Po Dapat"; 
    StringRequest stringRequest = new StringRequest(
     Request.Method.POST, 
     AppConfig.URL_FETCH_REPORT_PO, 
     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       try { 
        JSONObject jsonObject = new JSONObject(response); 
        boolean error = jsonObject.getBoolean("error"); 

        if(!error) { 
         JSONArray resultPo = jsonObject.getJSONArray("result"); 
         for(int i = 0; i < resultPo.length(); i++) { 
          JSONObject result = (JSONObject) resultPo.get(i); 
          String _cabang_id = result.getString("branch_id"); 
          String _area_id = result.getString("areacode"); 
          String _cabang = result.getString("branch_name"); 
          Log.d("FETCHING DATA DAPAT : ", _cabang_id + " " + _area_id + " " + _cabang); 
          dataBaseHelper.insertDataPoDapat(new PoModel(_cabang_id.trim(), _area_id.trim(), _cabang.trim())); 
         } 
        } else { 
         String errorMsg = jsonObject.getString("result"); 
         showAlertDialog(errorMsg); 
        } 
       } catch (JSONException e) { 
        showAlertDialog(e.getMessage()); 
       } 
       if (progressDialog != null) { 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
        } 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       showAlertDialog(volleyError.getMessage()); 
       if (progressDialog != null) { 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
        } 
       } 
      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("tipe", tipe); 
       params.put("uid", user_id); 
       params.put("last_date", last_date); 
       return params; 
      } 
     }; 
    AppController.getInstance().addToRequestQueue(stringRequest, tag_string_req); 
} 

Выполнения 2 запросить с помощью такого метода:

private void exeRequest() { 
    fetchDataPoMurni(valuea,value2,value3); 
    fetchDataPoDapat(valueb,value2,value3); 
} 

progressDialog показывает, и сообщение меняется, но проблема заключается в достижении второго запроса, который progressDialog не хочет отклонять.

Что не так с моим кодом выше, и как достичь того, что я хочу?

+0

ли вам решить эту проблему, и вы сталкиваетесь с 'пропускаются frames'? – natsumiyu

ответ

0
private void showProgress(String message) { 
    progressDialog=null;// Initialize to null 
    progressDialog = new ProgressDialog(this); 
     progressDialog.setTitle("Loading Data " + message); 
    progressDialog.setMessage("Please wait..."); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 
} 

Попробуйте это .. Инициализировать все экземпляры progressDialog к нулю, как только вы создаете новый прогресс диалоговое

+0

Не повезло, все тот же. –