日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebView加载失败或网络异常时,替换WebView的错误界面; 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WebView在加載失敗時(shí)會(huì)顯示一個(gè)失敗原因的界面,各個(gè)手機(jī)顯示的界面還都不一樣,部分手機(jī)還會(huì)把Url顯示出來;我們要做的就是統(tǒng)一加載失敗的界面;

大概思路:在WebView這個(gè)控件上面再覆蓋一個(gè)View,監(jiān)聽WebView加載失敗時(shí)把這個(gè)View顯示出來,這樣用戶就看不到原來的WebView的失敗界面了。

監(jiān)聽WebView開始加載、加載完成、加載失敗;

在開始加載時(shí),把自定義失敗的View隱藏,加載失敗時(shí)把這個(gè)View顯示出來;

mWebView.setWebViewClient(new WebViewClient() {//在開始加載網(wǎng)頁(yè)時(shí)會(huì)回調(diào)@Overridepublic void onPageStarted(WebView webView, String s, Bitmap bitmap) {super.onPageStarted(webView, s, bitmap);ivError.setVisibility(View.INVISIBLE);mWebView.setVisibility(View.VISIBLE);}//加載錯(cuò)誤的時(shí)候會(huì)回調(diào)@Overridepublic 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);}//加載錯(cuò)誤的時(shí)候會(huì)回調(diào)@Overridepublic void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {super.onReceivedError(webView, webResourceRequest, webResourceError);if (webResourceRequest.isForMainFrame()) {ivError.setVisibility(View.VISIBLE);mWebView.setVisibility(View.INVISIBLE);}}//加載完成的時(shí)候會(huì)回調(diào)@Overridepublic void onPageFinished(WebView webView, String s) {} });

點(diǎn)擊加載失敗界面,重新載入這個(gè)網(wǎng)頁(yè);

ivError.setOnClickListener(v -> mWebView.reload());

刷新后WebView退出不了,重定向的問題解決;

在setWebViewClient這個(gè)方法中添加:

@Overridepublic 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布局:

<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><com.cc.webview.X5WebViewandroid:id="@+id/mWebView"android:layout_width="match_parent"android:layout_height="match_parent" /><ImageViewandroid:id="@+id/ivError"android:layout_width="match_parent"android:layout_height="match_parent"android:src="@mipmap/web_loaderror"android:scaleType="centerCrop"android:visibility="invisible"/></FrameLayout>

大概就是這樣,WebView刷新后不能退出這個(gè)問題重寫一下“shouldOverrideUrlLoading”這個(gè)方法就行了;

總結(jié)

以上是生活随笔為你收集整理的WebView加载失败或网络异常时,替换WebView的错误界面;的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。