4

我还没有找到任何特定的解决方案来隐藏 Android 中 webviews 显示的默认错误。我可以通过错误代码捕获特定错误来显示我自己的自定义错误消息。

这里的问题是,在我的自定义错误消息显示之前,我会在一瞬间看到 WebView 错误,然后显示我的自定义错误。

以下是执行错误处理并显示我自己的自定义错误消息的一段代码:

protected void onPostExecute(String S) {

        mWebView.setWebViewClient(new WebViewClient() { 


            @Override
            public void onReceivedError(WebView view, int errCode, String errDescription, String failingUrl ) {

                view.clearView();

                Toast.makeText(getApplicationContext(), "Error code is "+errCode, Toast.LENGTH_SHORT).show();
                if(errCode == -2 || errCode == -8) {
                    view.loadData("There seems to be a problem with your Internet connection. Please try later", "text/html", "UTF-8");
                }

                if(errCode == -14) {
                    view.loadData("Page cannot be found on server", "text/html", "UTF-8");
                }

            }

        });

        mWebView.loadUrl(url);

        ShowProgress.dismiss();
    } 

有人可以就如何实现隐藏 webview 错误并仅显示我的自定义错误消息提出任何修改或建议吗?感谢您停下来阅读这篇文章。

4

2 回答 2

2

尝试添加这个:

view.stopLoading();

您的源代码将如下所示:

protected void onPostExecute(String S) {

        mWebView.setWebViewClient(new WebViewClient() { 


            @Override
            public void onReceivedError(WebView view, int errCode, String errDescription, String failingUrl ) {

                try {
                       view.stopLoading();
                  } 
                catch(Exception e){}
                view.clearView();

                Toast.makeText(getApplicationContext(), "Error code is "+errCode, Toast.LENGTH_SHORT).show();
                if(errCode == -2 || errCode == -8) {
                    view.loadData("There seems to be a problem with your Internet connection. Please try later", "text/html", "UTF-8");
                }

                if(errCode == -14) {
                    view.loadData("Page cannot be found on server", "text/html", "UTF-8");
                }

            }

        });

        mWebView.loadUrl(url);

        ShowProgress.dismiss();
    } 
于 2013-02-01T05:58:06.617 回答
2

我找不到具体的解决方案,因为这是一个错误#2340。因此,我将 webview 从应用程序中取出并使用常规浏览器。

于 2013-02-09T01:59:13.740 回答