Android:对话框问题

时间:2011-02-14 13:43:38

标签: android

我使用Progress Dialog,第一次加载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();

并将其解雇onPageFinished

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

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

先谢谢。

1 个答案:

答案 0 :(得分:0)

这个问题与活动有关,因为当我们关闭对话框活动存储它的值时,第二次调用它加载相同的对话状态,所以需要实现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);
    }

for 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);