即使在 android webview 中加载网站后,进度条也不会停止

progress bar is not stopped even after website loaded in android webview

我在 android webview 中添加了进度条,而 运行 项目进度条工作得很好,但问题是即使在网站加载后进度条也没有停止。

这是我尝试过的代码。

public class MainActivity extends AppCompatActivity {
    WebView webView;
    ProgressBar bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.webView2);

        bar =(ProgressBar) findViewById(R.id.progressBar2);

        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://florro-001-site8.etempurl.com");
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
    }

    public class myWebClient extends WebViewClient{

        @Override
        public void onPageFinished(WebView view, String url) {
            bar.setVisibility(View.GONE);
            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            bar.setVisibility(View.VISIBLE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            view.loadUrl(url);
            return super.shouldOverrideUrlLoading(view, url);
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
         webView.goBack();
         return true;
        }

        return super.onKeyDown(keyCode, event);
    }
}

设置可见性消失

@Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {

   view.loadUrl(url);
   bar.setVisibility(View.GONE);
   return super.shouldOverrideUrlLoading(view, url);
   }

你也创建了 class myWebClient 但是你忘了设置这个

替换此行

webView.setWebViewClient(new WebViewClient());

webView.setWebViewClient(new myWebClient());

您创建了内部 class myWebClient,您在其中更改了可见性但从未将其设置为您的 webview 对象。

onCreate()方法中:

  • 删除 2 行 webView.setWebViewClient(new WebViewClient());
  • 添加这一行:webView.setWebViewClient(new WebViewClient());