Android:ProgressDialog在第一次调用时没有动画

时间:2014-02-07 10:34:49

标签: android webview progressdialog

我有下面的loadWebView方法......

private void loadWebView() {
    final WebView myWebView = (WebView) findViewById(R.id.webView);

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setGeolocationEnabled(true);
    myWebView.setBackgroundColor(0x00000000);
    myWebView.setVisibility(View.VISIBLE);

    final ProgressDialog pd = ProgressDialog.show(this, "", "Connecting...", true);
    myWebView.loadUrl(_Host);

    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast toast = Toast.makeText(view.getContext(), "Could not connect.", Toast.LENGTH_LONG);
            toast.show();
            initSettings();
        }
        @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              HttpAuthHandler handler,
                                              String host,
                                              String realm) {
            handler.proceed(_Username, _Password);
        }
        //@Override
        public void onReceivedSslError(WebView view,
                                       SslErrorHandler handler,
                                       SslError error) {
            handler.proceed();
        }
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon)
        {
            pd.show();
        }
        @Override
        public void onPageFinished(WebView view, String url)
        {
            pd.dismiss();
        }
    });
}

当首次从手机中的主要活动(galaxy nexus)调用时,进度对话框不会生成动画,但它会在平板电脑上进行。 同样在关系中,当冲浪开始时,它可以动画。

有什么想法吗?其他一切正常!

编辑(解决) 好的,我找到了解决方案。在initSettings方法中,我被称为带有这些属性的WebView ......

WebView myWebView = (WebView) findViewById(R.id.webView);
myWebView.setVisibility(View.INVISIBLE);
myWebView.loadUrl = "about:blank";

我把它移到了已接受的错误上,现在一切正常!

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        view.setVisibility(View.INVISIBLE);
        view.loadUrl("about:blank");
        Toast toast = Toast.makeText(view.getContext(), "Could not connect.", Toast.LENGTH_LONG);
        toast.show();
        initSettings();
    }

1 个答案:

答案 0 :(得分:0)

在配置WebViewClient之后,您应该调用loadUrl,在其他情况下,您可能根本不使用webviewclient:

 myWebView.setWebViewClient(new WebViewClient() { ..}
 myWebView.loadUrl(_Host);

是的,这种行为是不可预测的!如果您使用错误的订单,它可能会也可能不会。