我们假设已经加载了一个网址(我们将其称为原始网址)。
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未加载(似乎逻辑,目前现在缺少。)。但这是一个很好的方法吗?有什么问题的建议吗?
如果用户想要重新加载内容,还有一个刷新按钮。同样的问题在这里。
答案 0 :(得分:3)
您应该加载想要的网址而不是使用webView.reload(),如下所示:
webView.loadUrl("http://yoururl");
或返回上一页:
webView.loadUrl("javascript:history.go(-1)");
答案 1 :(得分:0)
我会检查onResume()中的互联网连接,就像http://developer.android.com/training/basics/network-ops/managing.html
上建议的那样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() {
答案 2 :(得分:0)
不仅移动连接可能断开,而且页面也可能不可用,正如您正确地说的那样,使用webview.loadUrl(“ someerrorpage.html”)会创建虚假历史记录,并在用户尝试刷新或按下时引起问题回来。
我的解决方案是用我自己的自定义标签替换默认错误页面的内容,例如
webView.evaluateJavascript("javascript:document.open();document.write('your custom error html');document.close();", null);