Webview with asynctask on Android

13,851

Don't use AsyncTask, as you are not in charge of loading the webview. If you want to show a progress dialog, here is how to do it.

private ProgressDialog dialog = new ProgressDialog(WebActivity.this);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    webView = (WebView) findViewById(R.id.webView1);

    Bundle extras = getIntent().getExtras();
    String url=extras.getString("adres");

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {                  
            if (dialog.isShowing()) {
                dialog.dismiss();
            }
        }
    });
    dialog.setMessage("Loading..Please wait.");
    dialog.setCanceledOnTouchOutside(false);
    dialog.show();
    webView.loadUrl(url);



    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
}

The idea is that you show the dialog, you start loading the url, and when the webclient sees that the page has finished loading, it dismisses the dialog.

Share:
13,851
Serkan
Author by

Serkan

Updated on June 04, 2022

Comments

  • Serkan
    Serkan almost 2 years

    i want to do it which the progress dialog waits the loading item on webview. How can i do it which dialog.dismiss() event depend on loading item on webview?

        public class asynctask extends  AsyncTask<Void, Void, Void> {
    
        private ProgressDialog dialog = new ProgressDialog(WebActivity.this);
    
    
      @Override
      protected void onPostExecute(Void result) {
          // TODO Auto-generated method stub
    

    in there how can i do it ??

          dialog.dismiss();
    

    dialog disappear without waiting

         }
     @Override 
     protected void onPreExecute() {
          // TODO Auto-generated method stub
            dialog.setMessage("Loading..Please wait.");
    
            dialog.show();
            dialog.setCanceledOnTouchOutside(false);
         }
    
    
    
    @Override
    protected Void doInBackground(Void... params) {
          // TODO Auto-generated method stub
    
    
    
    
          return null;
         }
    
    
     @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
    
        setContentView(R.layout.webview);
    
        webView = (WebView) findViewById(R.id.webView1);
    
    
        Bundle extras = getIntent().getExtras();
        String url=extras.getString("adres");
    
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl(url);
    
    
    
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
    
        new asynctask().execute();
    

    }