Я работаю над проектом каталога, который может делать CRUD. На каждом процессе CRUD он показывает ProgressDialog.Продвинутый диалог не разрешен
Проблема заключается в том, что «Обновление каталога данных» не отменяется и запускается вечно до тех пор, пока MJ не забудет о рэпе. Я не понимаю, почему. Пожалуйста, помогите
Код
public void updateProduct(final String id, final String name, final String price, final String category, final String description, @Nullable String imageBase64) {
Log.i("zihad", "updateProduct()");
progressDialog = ProgressDialog.show(context, "Update data catalog", "Please wait ...");
StringRequest myStringRequest = new StringRequest(Request.Method.POST, MainActivity.URL_SERVER+"/updateproduct.php",
new Response.Listener<String>() {
@Override
public void onResponse(String jsonResponse) {
progressDialog.dismiss();
Log.i("zihad", "updateProduct().onResponse()");
try {
JSONObject jObject = new JSONObject(jsonResponse);
if (jObject.getBoolean("success")) {
Toast.makeText(context, "Product has been updated", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
myDefaultErrorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> mapParam = new HashMap<>();
mapParam.put("id", id);
mapParam.put("name", name);
mapParam.put("price", price);
mapParam.put("category", category);
mapParam.put("description", description);
return mapParam;
}
};
requestQueue.add(myStringRequest);
if (imageBase64 != null) {uploadImageProduct(id, imageBase64);}
}
public void uploadImageProduct(final String id, final String imageBase64) {
Log.i("zihad", "uploadImageProduct()");
progressDialog = ProgressDialog.show(context, "Upload image catalog", "Please wait ...");
StringRequest myStringRequest = new StringRequest(Request.Method.POST, MainActivity.URL_SERVER+"/uploadimage.php",
new Response.Listener<String>() {
@Override
public void onResponse(String jsonResponse) {
Log.i("zihad", "uploadImageProduct().onResponse()");
progressDialog.dismiss();
}
},
myDefaultErrorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> mapParam = new HashMap<>();
mapParam.put("id", id);
mapParam.put("imageBase64", imageBase64);
return mapParam;
}
};
requestQueue.add(myStringRequest);
}
попробуйте использовать 'progressDialog.cancel();' вместо –
Вы используете ту же переменную - progressDialog' - для двух разных экземпляров 'ProgressDialog', и они смешиваются. Следуйте своему журналу вместе с кодом. После запуска 'uploadImageProduct()' 'progressDialog' относится к экземпляру« Загрузить каталог изображений ». –
@MikeM. правильный ответ – Fndroid