【问题标题】:Android Progress Dialog doesn't showAndroid 进度对话框不显示
【发布时间】:2015-05-12 07:57:02
【问题描述】:

我想在处理某些用户的请求时显示一个进度对话框。这是我的代码,我看不出对话框没有出现在屏幕上的任何充分理由。

 public void onGoClick(Button button) {
    ProgressDialog progressDialog = null;
    try {
        if (invalid) {
           //   Show error message
        } else {
            progressDialog = new ProgressDialog(getActivity());
            progressDialog.setIndeterminate(true);
            progressDialog.setMessage(getActivity().getResources().getString(R.string.user_wait_message));
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressDialog.show();

            //  Do processing
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        progressDialog.dismiss();
    }
}

当我将 ProgressDialog 声明语句移动到 try 块中并从 finally 块中删除解除方法时,我能够在屏幕上看到循环对话框,但是当我像上面的代码一样更改它时,什么都没有出现屏幕。处理区域中没有异步调用,这就是为什么我在这里没有发现任何错误。任何帮助表示赞赏,谢谢。

【问题讨论】:

  • 是的,好的看起来不错,无效的必须是真的
  • 我猜它的一些异常上升了。尝试调试它。
  • @marsje else 块正在执行。
  • 我已经调试过了,else块正在执行。
  • 附带说明,如果 invalid 为真,您将使用当前方法遇到空指针异常,因为您从未初始化 progressDialog,这意味着您在 finally 块中运行 null.dismiss();

标签: java android user-interface progressdialog


【解决方案1】:

显示您的进度对话框,然后立即关闭。 finally 块在 try 块之后直接执行。

尝试添加OnDismissListener 以亲自验证这一点。

【讨论】:

    【解决方案2】:

    clean and build 对我有用,这很奇怪。我不知道这是 Android Studio (1.2) 中的错误还是其他问题。我非常感谢您的回答,因为它非常有帮助,而且我在 android 中学到了很多关于异步的知识 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多