Reputation: 158
I am showing a progress dialog in my webview but it is not hiding on page finished i browsed through many SO its said to "progress.dismiss()" but still its not dismissing also the loading is not shown which i move to other pages in the webview
my code is
public class MainActivity extends ActionBarActivity {
private WebView webView;
private final String TAG = MainActivity.class.getSimpleName();
ConnectivityManager cm;
android.net.NetworkInfo wifi;
android.net.NetworkInfo datac;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
datac = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if ((wifi != null & datac != null)
&& (wifi.isConnected() | datac.isConnected())) {
//getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //to hide notification bar
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
boolean returnValue=true;
if ((wifi != null & datac != null)
&& (wifi.isConnected() | datac.isConnected())) {
if ((Uri.parse(url).getHost().contains("www.cbazaar") || Uri.parse(url).getHost().contains("payseal.icicibank")) || Uri.parse(url).getHost().contains("www.ccavenue")
|| Uri.parse(url).getHost().contains("www.braintreepaments") || Uri.parse(url).getHost().contains("www.sandbox")) {
returnValue=false;
}
if(returnValue==true){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return returnValue;
}
}
return returnValue;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
webView.loadUrl("javascript:history.go(-1)");
}
ProgressDialog pd = null;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pd = new ProgressDialog(MainActivity.this);
pd.setTitle("Please wait");
pd.setMessage("");
pd.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
pd.dismiss();
}
});
webView.loadUrl("http://www.cbazaar.com");
}else{
//no connection
setContentView(R.layout.activity_no_internet);
Button netOnBtn=(Button) findViewById(R.id.netOnButton);
Button refreshHmeBtn=(Button) findViewById(R.id.refreshHmeBtn);
netOnBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
}
});
refreshHmeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent gotoMainActivity = new Intent (MainActivity.this,MainActivity.class);
startActivity(gotoMainActivity);
finish();
}
});
}
}
// Open previous opened link from history on webview when back button pressed
@Override
// Detect when the back button is pressed
public void onBackPressed() {
if(webView.canGoBack()) {
webView.goBack();
} else {
// Let the system handle the back button
super.onBackPressed();
}
}
Can some one help me as how can this be debugged or why is the loading not dismissing and not displaying when moving to other pages
Thanks in advance as this is my first web app.
Upvotes: 1
Views: 2283
Reputation: 12328
Try something like this:
private void startWebView(String url) {
MyView.setWebChromeClient(new WebChromeClient() {
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
@Override
public void onProgressChanged(WebView view, int progress) {
if (progress < 100) {
// in standard case YourActivity.this
progressDialog.setMessage("Loading...");
progressDialog.show();
}
if (progress == 100) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}
}
});
// Javascript enabled on webview
webView.getSettings().setJavaScriptEnabled(true);
//Load url in webview
webView.loadUrl(url);
}
This way, you can use a real progressbar in your ProgressDialog.
Upvotes: 2