【问题标题】:Android:dialog box issueAndroid:对话框问题
【发布时间】:2011-02-14 13:43:38
【问题描述】:

我使用进度对话框,第一次加载 Web 视图并在 OnCreate 中创建对象时

            progressBar = new ProgressDialog(this);
    progressBar.setCancelable(true);
    progressBar.setMessage("Loading...");
    progressBar.setOnCancelListener(new OnCancelListener() {

        public void onCancel(DialogInterface arg0) {

            if (progressBar.isShowing())
                progressBar.dismiss();
            finish();
        }
    });
    progressBar.show();

在PageFinished 上关闭它

            public void onPageFinished(WebView view, String url) {
                Log.i("TEST", "Finished loading URL: " + url);
                if (progressBar.isShowing()) {
                    progressBar.dismiss();
                }
            }

然后我从菜单加载另一个 url 然后我在 onPageStarted 中编写代码

                   @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                 if(progressBar.isShowing()){}

                 else
                 //progressBar.
                 progressBar.show();
                super.onPageStarted(view, url, favicon);
            }

第二次对话框中的圆圈没有运行,一切正常。 您可以在 ApiDemos 中查看相同的问题。 请在设备中安装 Apidemos 应用程序,然后转到查看->进度条->对话框->单击“显示 Intermediat” 然后使用后退按钮关闭。现在添加单击同一个按钮,圆形动画将起作用

提前致谢。

【问题讨论】:

  • 您是否尝试过在调用之前调用基类 (super.onPageStarted) 以显示进度条?
  • 是的,我使用 super.onPageStarted 调用了超级调用

标签: android


【解决方案1】:

这是与活动有关的问题,因为当我们关闭对话框活动时,会存储它的值,所以第二次调用它会加载相同的对话框状态,因此需要实现 onPrepareDialog 来重置新值并使用 removeDialog(int)放映前。请查看ProgressBar does not reset to "0" when opening the second time

代码在这里

   @Override
    protected void onPrepareDialog(int id, Dialog dialog) {

        switch (id) {
        case DIALOG_WEBVIEW:
            progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressBar.setMessage("Loading...");
            progressBar.setCancelable(true);
            //mProgressDialog.show();
            return;
        default:
            return ;
        }
        //super.onPrepareDialog(id, dialog);
    }

对于 onCreateDialog

protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DIALOG_WEBVIEW:
                progressBar = new ProgressDialog(this);
                progressBar.show();
                return progressBar;
            default:
                return null;
        }
    }

最后像这样显示、关闭和删除

                            removeDialog(DIALOG);
                showDialog(DIALOG); 
                            dismissDialog(DIALOG);

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多