Webview with asynctask on Android
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();
}
Solution 1:
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.