2016-04-20 5 views
1

私のコードではstringRequestちょっとうまく動作するVolleyですが、今はprogressDialogを使いたいと思います。私は2を実行2つ以上のアンドロイドのprogressDialogを使用していますstringRequest Volley

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); 
} 

:私はprogressDialog

このような
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(); 
} 

を置くために1つのメソッドを作成していると私はこのようなこれらの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 exeRequest() { 
    fetchDataPoMurni(valuea,value2,value3); 
    fetchDataPoDapat(valueb,value2,value3); 
} 

progressDialogが表示され、メッセージが変更されていますが、問題は、progressDialogが却下したくないという2番目の要求に達したときです。

上記のコードで何が問題なのですか?

+0

ダイアログ新しい進展を作成するとnullにprogressDialogのすべてのインスタンスを初期化する。これを試してみてください、あなたがそれを解決持っていて、 '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(); 
} 

とすぐに

+0

運がない、まだ同じです。 –

関連する問題