WebView加载失败或网络异常时,替换WebView的错误界面;

您所在的位置:网站首页 webview加载失败的处理 WebView加载失败或网络异常时,替换WebView的错误界面;

WebView加载失败或网络异常时,替换WebView的错误界面;

2022-12-20 17:51| 来源: 网络整理| 查看: 265

WebView加载失败或网络异常时,替换WebView的错误界面; 转载

mb5fdb138eb7a27 2021-08-10 12:01:00

文章标签 webview 加载 android ide 重定向 文章分类 Java 编程语言

WebView在加载失败时会显示一个失败原因的界面,各个手机显示的界面还都不一样,部分手机还会把Url显示出来;我们要做的就是统一加载失败的界面;

大概思路:在WebView这个控件上面再覆盖一个View,监听WebView加载失败时把这个View显示出来,这样用户就看不到原来的WebView的失败界面了。

监听WebView开始加载、加载完成、加载失败;

在开始加载时,把自定义失败的View隐藏,加载失败时把这个View显示出来;

mWebView.setWebViewClient(new WebViewClient() { //在开始加载网页时会回调 @Override public void onPageStarted(WebView webView, String s, Bitmap bitmap) { super.onPageStarted(webView, s, bitmap); ivError.setVisibility(View.INVISIBLE); mWebView.setVisibility(View.VISIBLE); } //加载错误的时候会回调 @Override public void onReceivedError(WebView webView, int i, String s, String s1) { super.onReceivedError(webView, i, s, s1); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return; } ivError.setVisibility(View.VISIBLE); mWebView.setVisibility(View.INVISIBLE); } //加载错误的时候会回调 @Override public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) { super.onReceivedError(webView, webResourceRequest, webResourceError); if (webResourceRequest.isForMainFrame()) { ivError.setVisibility(View.VISIBLE); mWebView.setVisibility(View.INVISIBLE); } } //加载完成的时候会回调 @Override public void onPageFinished(WebView webView, String s) { } }); 点击加载失败界面,重新载入这个网页; ivError.setOnClickListener(v -> mWebView.reload()); 刷新后WebView退出不了,重定向的问题解决;

在setWebViewClient这个方法中添加:

@Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { WebView.HitTestResult hitTestResult = webView.getHitTestResult(); //hitTestResult==null解决重定向问题(刷新后不能退出的bug) if (!TextUtils.isEmpty(url) && hitTestResult == null) { return true; } return super.shouldOverrideUrlLoading(webView, url); } 看一下XML布局:

大概就是这样,WebView刷新后不能退出这个问题重写一下“shouldOverrideUrlLoading”这个方法就行了;

打赏 收藏 评论 分享 举报

上一篇:python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

下一篇:用kotlin语言实现随机获取一个list的集合的三条数据



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3