在安卓中隐藏Webview错误

4

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

问题在于,在我的自定义错误消息出现之前,我会看到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错误,并只显示我的自定义错误消息?感谢您阅读此帖子。
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();
    } 

谢谢您的回复。我按照您的方法尝试了一下,但仍然遇到了同样的问题。原始错误仍会在瞬间显示出来。 - Abhishek Sabbarwal
尝试进入这个讨论 http://code.google.com/p/android/issues/detail?id=2340。它可能会有所帮助。 - Lazy Ninja
谢谢。我已经看到了这个,甚至考虑过在那里发布评论。最终,现在我留下了我的评论。自从很久以前以来,似乎没有更新了。感谢您的时间。 - Abhishek Sabbarwal

2

我没有找到一个特定的解决方案,因为这是一个#2340的错误。所以我将webview从应用程序中移除,改用普通浏览器。


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