我使用Volley库将json请求发送到REST服务。然后解析json结果并在webView中显示。它正常工作,除了它在加载时显示“网页不可用”。加载数据后,此页面将消失。
我在加载过程中放置了一个进度对话框,但它并没有完全隐藏默认网页。你有什么主意吗?谢谢!
AfterProcessingTime.pastFirstElementInPane(Duration.standardMinutes(1))
答案 0 :(得分:1)
上面的答案仍显示自定义错误页面显示之前的“网页不可用”页面。
我的解决方案是检查信息是否已从REST API下载并最终显示我的自定义错误页面。
程序是这样的:
在我的搜索(字符串输入)函数中,从REST api下载信息并检查是否发生错误
@Override
public void onErrorResponse(VolleyError error) {
hideProgressDialog();
errorHappened = true;
}
覆盖WebClient的onPageFinished,并在发生错误时显示自定义网页。因为onPageFinished一直被调用,所以我放了两个布尔值以确保错误页面只加载一次。否则,当片段关闭时,它可能会导致问题。 我在webview下面放了一个按钮,以便在发生错误时关闭片段。没有错误发生时不显示。
WebViewClient client = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if(errorHappened && !errorShown){
webView.loadUrl("file:///android_asset/error.html");
webView.setVisibility(View.VISIBLE);
errorShown = true;
buttonClose.setVisibility(View.VISIBLE);
}
}
//... other code
};
webView.setWebViewClient(client);
// Show the web page
webView.loadDataWithBaseURL("file:///android_asset/", webPage, "text/html", "utf-8", null);
webView.setVisibility(View.VISIBLE);
答案 1 :(得分:0)
我不知道你是否还需要答案。
为了以防万一,对于任何能够到达这里的人来说,解决方案相当简单。
它应该足以覆盖onReceivedError
的{{1}}方法,并提供错误/加载页面来覆盖默认值。
例如,如果您的资产文件夹中有自定义WebViewClient
页面:
customErrorPage.html