【问题标题】:ProgressDialogue is not dismissing or cancelling at allProgressDialogue 根本没有解雇或取消
【发布时间】:2016-04-05 05:28:15
【问题描述】:

我在 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()。它是相同的进度对话,但没有被取消。

【问题讨论】:

    标签: java android progressdialog


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您将可取消设置为 false,因此不要调用 progressBar.cancel()。跳过它并直接调用progressBar.dismiss()。它应该工作。如果没有,我们将深入挖掘。

      【讨论】:

      • 这仍然不适合我。你有什么想法或建议我可以在这里重新检查吗?
      • 可能导致这种情况的一件事是,如果您正在创建多个进度对话框的实例。检查progressBar = new ProgressDialog(context);在您的代码中只调用一次
      【解决方案3】:

      setCancelable 中使用 true 而不是 false,它会起作用。

      progressBar.setCancelable(true);
      

      【讨论】:

        猜你喜欢
        • 2018-10-07
        • 2020-03-28
        • 2015-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-08
        相关资源
        最近更新 更多