Android:WebView在Android 4.4中的shouldOverrideUrlLoading方法后不调用onPageFinished。

3

我正在处理 WebView Android 4.4,当发生 URL 重定向时,载入轮会一直转而无法正确取消。我已经搜索了很多,但仍然无法得到答案。有人可以解释一下 WebView Android 4.4 的流程吗?这是我的代码:

public class MyWebViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

            dialog = ProgressDialog.show(getActivity(), null, "Loading...");
            dialog.setCancelable(true);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            dialog.dismiss();
        }
}

请求URL为"www.google.com"。WebView设置正常。在shouldOverrideUrlLoading方法后,OnpageFinished未被调用。

1个回答

4

我在处理进度对话框时犯了一个错误。

public class MyWebViewClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        if(dialog == null){
              dialog = ProgressDialog.show(getActivity(), null, "Loading...");
              dialog.setCancelable(true);
        }
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        if(dialog.isShowing())
             dialog.dismiss();
    }
}

现在对于所有的api级别都运作正常。

1
在这种情况下,覆盖 shouldOverrideUrlLoading 不是必要的。但我猜你正在处理 URL? - Harry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接