进度对话框根本没有关闭或取消

ProgressDialogue is not dismissing or cancelling at all

我在 API 调用中显示了一个进度条,如下所示:

 // prepare for a progress bar dialog
 progressBar = new ProgressDialog(context);
 progressBar.setCancelable(false);
 progressBar.setMessage(context.getResources().getString(R.string.please_wait));
 progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);

但是当我取消或关闭上面创建的进度对话框时,它没有任何效果。

progressBar.cancel();
progressBar.dismiss();

以上两个调用是成功&失败的回调方法:

@Override
public void success(RockAPI.CallResult result) {
    progressBar.cancel();
    progressBar.dismiss();
    ....
}

@Override
public void failure(RockAPI.CallResult result) {
    progressBar.cancel();
    progressBar.dismiss();
    ......
}

我在成功点和失败点调试了应用程序,这些代码行得到执行,但进度对话仍然存在。我已经检查了所有代码,没有其他地方可以调用此进度条 show()。同样的进度对话,只是没有被取消。

您正在将 cancelable 设置为 false,所以不要调用 progressBar.cancel()。跳过它并直接调用 progressBar.dismiss()。它应该工作。如果没有,我们将深入挖掘。

创建类似的函数并在需要时调用..

ProgressDialog progressDialog;


public void showPD(String message) {
    if (progressDialog == null) {
        progressDialog = new ProgressDialog(getContext());
        //progressDialog.setProgressNumberFormat(null);
        //progressDialog.setProgressPercentFormat(null);
        //progressDialog.setIndeterminate(true);
        //progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setMessage(message);
        progressDialog.setCancelable(false);
        progressDialog.setCanceledOnTouchOutside(false);
        progressDialog.show();
    }
}

public void hidePD() {
    if (progressDialog != null) {
        progressDialog.dismiss();
        progressDialog = null;
    }
}

在您的 setCancelable 中使用 true 而不是 false,它将起作用。

progressBar.setCancelable(true);