我已经创建了这样的进度对话框

public VolleyService(Context context, VolleyServiceCompletedListener listener){
    this.context = context;
    pDialog = new ProgressDialog(context);
    pDialog.setMessage("Loading...");
    pDialog.setCancelable(false);
    this.listener = listener;
}

并尝试使用此方法显示进度对话框。
private void showProgressDialog() {
    boolean isShowing = pDialog.isShowing();
    if (!isShowing)
        pDialog.show();
}

并使用此方法隐藏对话框。
private void hideProgressDialog() {
    if (pDialog.isShowing()) {
        pDialog.hide();
    }
}

问题是,即使我调用了pDialog.isShowing()pDialog.hide()仍返回true。当我从hide()中看到android.app.Dialog.java方法时,他们没有将mShowing变量分配为false,但是当我调用show()时,他们将mShowing变量分配为true。

那么,他们背后没有任何虚假的理由吗?以及如何再次打开相同的进度对话框?

最佳答案

不要使用hide(),而要使用dismiss()。这也将防止泄漏窗口错误

有关更多信息,请引用此link

10-04 10:19