添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams So do you mean i add timer and check the progress of current page by calling getProgress(), if it's not 100 yet i can call stopLoading(). user430926 Nov 29, 2010 at 11:04

We can use onLoadResource method of WebViewClient instead of Timer . Like this:

webView.setWebViewClient(new WebViewClient() {
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressDialog.show();
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Log.d("WEBCLIENT", "onPageFinished");
    @Override 
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
        Log.d("WEBCLIENT","onLoadResource");
        if(webView.getProgress() == 100) {
            progressDialog.dismiss();
                If the webpage is stuck means, its progress will not be 100 , So the progress bar will be displayed until , the webView.getProgress() is 100
– John
                Dec 12, 2016 at 13:12
                The question was not about progress bar, but timeout. This method would not work if the webpage loading gets completely stuck at some percent because none of these functions would get called, so there would be no possibility to take action.
– Przemysław Wrzesiński
                Dec 12, 2016 at 13:16

I use

@Override
    public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
        final Dialog dialog = new Dialog(MainActivity.this, android.R.style.Theme_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.alert_dialog);
        Button btTryAgain = dialog.findViewById(R.id.bt_try_again);
        btTryAgain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                recreate();
        dialog.show();
        //Toast with error conection
        Toast.makeText(getApplicationContext(), "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();

Where -alert_dialog- is a layout with a button to retry

inside your code, I see use of recreate(); on retry click. So, instead of recreate(); you may use WebView's reload() method. it will attempt to reload the entire web page. – Dhaval Shah Jun 2, 2022 at 10:34

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.