如何偵聽WebView完成加載URL?我有一個WebView從互聯(lián)網(wǎng)上加載頁面。我想展示一個ProgressBar直到裝貨完成。如何偵聽完成WebView?
3 回答

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超4個贊
mWebView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { // do your stuff here }});

郎朗坤
TA貢獻1921條經(jīng)驗 獲得超9個贊
boolean loadingFinished = true;boolean redirect = false;mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { if (!loadingFinished) { redirect = true; } loadingFinished = false; webView.loadUrl(urlNewString); return true; } @Override public void onPageStarted(WebView view, String url) { loadingFinished = false; //SHOW LOADING IF IT ISNT ALREADY VISIBLE } @Override public void onPageFinished(WebView view, String url) { if (!redirect) { loadingFinished = true; //HIDE LOADING IT HAS FINISHED } else { redirect = false; } }});
最新情況:
更新2:
boolean loadingFinished = true;boolean redirect = false; mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading( WebView view, WebResourceRequest request) { if (!loadingFinished) { redirect = true; } loadingFinished = false; webView.loadUrl(request.getUrl().toString()); return true; } @Override public void onPageStarted( WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); loadingFinished = false; //SHOW LOADING IF IT ISNT ALREADY VISIBLE } @Override public void onPageFinished(WebView view, String url) { if (!redirect) { loadingFinished = true; //HIDE LOADING IT HAS FINISHED } else { redirect = false; } } });

夢里花落0921
TA貢獻1772條經(jīng)驗 獲得超6個贊
private void setupWebViewClient() { webView.setWebViewClient(new WebViewClient() { private int running = 0; // Could be public if you want a timer to check. @Override public boolean shouldOverrideUrlLoading(WebView webView, String urlNewString) { running++; webView.loadUrl(urlNewString); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { running = Math.max(running, 1); // First request move it to 1. } @Override public void onPageFinished(WebView view, String url) { if(--running == 0) { // just "running--;" if you add a timer. // TODO: finished... if you want to fire a method. } } });}
- 3 回答
- 0 關(guān)注
- 1142 瀏覽
添加回答
舉報
0/150
提交
取消