karan
karan

Reputation: 482

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

I have added progress bar in android webview, while run the project progress bar is working great but the problem is that progress bar is not stopped even after website is loaded.

Here is my code what I tried.

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);
    }
}

Upvotes: 0

Views: 135

Answers (2)

ziyaddin.ovchiyev
ziyaddin.ovchiyev

Reputation: 85

You created the inner class myWebClient where you change the visibility but never set it to your webview object.

in onCreate() method:

  • remove 2 lines with webView.setWebViewClient(new WebViewClient());
  • add this line: webView.setWebViewClient(new WebViewClient());

Upvotes: 0

Hemant Parmar
Hemant Parmar

Reputation: 3976

set visibility gone in

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

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

also you create the class myWebClient but you forget to set this

Replace this line

webView.setWebViewClient(new WebViewClient());

To

webView.setWebViewClient(new myWebClient());

Upvotes: 1

Related Questions