【发布时间】:2019-07-12 04:08:20
【问题描述】:
当发生一些错误(互联网断开连接,超时...)时,自定义 html 页面会在 webview 中加载,并且 failedUrl 保存在 viewModel 中。
当按下重新加载按钮时,它会尝试重新加载失败的Url。
问题是每次我加载自定义 html 文件时,都会在 onPageStarted 中再次调用它并清除 failedUrl。所以 failedUrl 将为空。调用 onPageStarted 时如何知道是否是错误页面?
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//clear failingUrl
viewModel.setFailingUrl(null);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
String htmlData ="<html><body>" + "ErrorNo: " + errorCode + "</body></html>";
view.loadDataWithBaseURL(failingUrl, htmlData, "text/html", "UTF-8", failingUrl);
//save failingUrl
viewModel.setFailingUrl(failingUrl);
}
});
重新加载按钮:
reloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!viewModel.getFailingUrl()) {
webView.loadUrl(viewModel.getFailingUrl());
return;
}
webView.reload();
}
});
我可以在单击 reloadButton 时清除 failedUrl,但这不是一个好主意。因为如果我在webView恢复正常时更改url,并按下reloadButton,它将重新加载failingUrl。
【问题讨论】:
-
检查
onPageStarted方法中的url,看看是不是你下落的url?? -
我应该把它作为答案发布吗?
-
请。如果可以的话,更详细。
-
好的。我加了一个