【问题标题】:is `onPageFinished` is called after `onReceivedError` in anyway?无论如何,在`onReceivedError`之后调用`onPageFinished`?
【发布时间】:2014-05-22 13:52:50
【问题描述】:

我有这个代码:

private final class MyWebClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap  favicon) {
        url = "localhost:999";
        mIsLoaded = false;
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        mIsLoaded = true;
        super.onPageFinished(view, url);
    }

    @Override
    public void onReceivedError(WebView view, int errorCode,
                                String description, String failingUrl) {
        mIsLoaded = false;
        super.onReceivedError(view, errorCode, description, failingUrl);
    }

}

覆盖事件的关系和顺序是什么

如果成功?

万一失败?

MyWebClient 应该设置一个对话框内容

但如果我的错误代码不是 0,我希望它隐藏对话框。

我应该只在onReceivedError 中“返回”还是调用onPageFinished

【问题讨论】:

    标签: java android webview android-webview


    【解决方案1】:

    onPageFinished 告诉您 WebView 已停止加载。 onReceivedError 告诉你有一个错误。它们不是“成功”和“失败”回调,这就是为什么在发生错误时你会同时得到这两者的原因。

    另外,callback implementations in WebViewClient 通常不会做任何有用的事情,所以无论你是否调用super.onReceivedError 都没有区别。在onReceivedError 中无法“返回”。如果您想在出现错误时显示其他内容,请从onReceivedError 调用view.loadUrl(...)

    【讨论】:

    • 顺便说一句,为什么我看到我的onPageStarted 被调用了两次:在onReceivedError 之前和之后?
    • @EladBenda:这很令人惊讶,您正在测试哪个版本的 Android?我的猜测是 WebView 正在为导航到错误页面生成回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多