7

我们假设已经加载了一个 url(我们称它为原始 url)。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        webView.loadUrl("file:///android_asset/missing.html");
    } 
});

我创建了自己的错误页面,以防止出现“网页不可用消息”。应用程序必须在每次恢复时重新加载 webview。所以我有以下代码行:

@Override
protected void onResume() {
    super.onResume();
    webView.reload();
}

这里的问题是,当错误页面被加载时(例如当用户没有连接到互联网时),然后连接再次可用并且用户恢复应用程序时,原始 url 没有加载(这似乎是逻辑,现在是missing.html)。但这是一个不错的方法吗?对问题有什么建议吗?

如果用户想要重新加载内容,还有一个刷新按钮。这里同样的问题。

4

3 回答 3

4

您应该加载所需的 url 而不是使用 webView.reload(),如下所示:

webView.loadUrl("http://yoururl");

或返回上一页:

webView.loadUrl("javascript:history.go(-1)");
于 2013-10-25T16:16:50.673 回答
1

我会像http://developer.android.com/training/basics/network-ops/managing.html上建议的那样检查 onResume() 中的互联网连接

public static boolean isOnline() {
  ConnectivityManager connMgr = (ConnectivityManager) App.instans.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
  return (networkInfo != null && networkInfo.isConnected());
}

public void onResume() {
于 2012-12-06T14:54:21.393 回答
0

不仅移动连接可能会断开,而且页面可能会变得不可用,正如您正确所说的那样,使用 webview.loadUrl("someerrorpage.html") 会创建虚假历史记录并在用户尝试刷新或按下时导致问题。

我的解决方案是用我自己的自定义错误页面替换默认错误页面的内容,例如

webView.evaluateJavascript("javascript:document.open();document.write('your custom error html');document.close();", null);
于 2018-09-14T09:35:21.197 回答