onPageFinished()有时不会被调用

时间:2018-07-30 12:06:31

标签: android android-webview webviewclient

我有一个WebViewClient的自定义实现,该实现覆盖了onPageFinished(),在这里我将加载视图换成WebView。有时一切正常,但是其他时候onPageFinished()根本没有被调用。这是完全随机的。

onPageStarted()总是被呼叫。

public class LoaderWebViewClient extends WebViewClient {

    private final TableLayout swapTableLayout;

    public LoaderWebViewClient(TableLayout swapTableLayout) {
        this.swapTableLayout = swapTableLayout;
    }

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

    // Sometimes doesn't get called
    @Override
    public void onPageFinished(WebView view, String url) {

        swapTableLayout.removeAllViews();
        swapTableLayout.addView(view);

        super.onPageFinished(view, url);
    }
}

我正在从自定义类实例化一个WebView

WebView webView = new WebView(context);

WebViewClient webViewClient = new LoaderWebViewClient(swapTableLayout);
webView.setWebViewClient(webViewClient);

webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setJavaScriptEnabled(true);
webView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webView.loadUrl(url);

1 个答案:

答案 0 :(得分:0)

我发现了问题。在onPageFinished()中,我将从WebView本身所在的布局中删除所有视图(如下一行所示)。

这以某种方式干扰了WebView的加载。我只是用隐藏和显示替换了删除和重新插入的视图(它们总是在布局中膨胀),并且一切似乎都正常。