4

エラーが発生した場合、アセットからローカル HTML を表示したいと考えています。ただし、onReceivedError メソッドをオーバーライドしても、アセットのページが表示される前に、エラー ページが一瞬点滅します。この問題の修正またはハックはまだありますか?

これが私のコードです:

    @Override
    public void onReceivedError (WebView view, int errorCode, String description, String failingUrl)
    {
        Log.i("onReceivedError", "onReceivedError: " + failingUrl + " errorCode: " + errorCode);
        super.onReceivedError(view, errorCode, description, failingUrl);
        view.stopLoading();
        loadFromAsset(view, failingUrl);
    }
4

1 に答える 1

0

onPageStarted イベントでインターネット接続があるかどうかを確認することで、この問題を回避できました。今のところ、これまでにテストしたすべてのデバイスで動作しているようです。カスタム HTML エラー ページを使用しています。

 mWebView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            if(!NetworkConnection.isNetworkAvailable(getActivity()) && !url.equals("file:///android_asset/error_page.html")){
                view.loadUrl("file:///android_asset/error_page.html");
            }
            super.onPageStarted(view, url, favicon);
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            mWebView.loadUrl("file:///android_asset/error_page.html");
            super.onReceivedError(view,errorCode,description,failingUrl);
        }

    });
于 2016-08-03T10:00:32.727 に答える