【发布时间】:2020-03-26 19:44:56
【问题描述】:
我正在开发可以执行 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。正确答案
标签: android android-volley progressdialog