Adding a Progress Dialog in a webview
Check this code,
final ProgressDialog pd = ProgressDialog.show(OnlinePaymentActivity.this, "", "Please wait, your transaction is being processed...", true);
WebView mWebview = (WebView)findViewById(R.id.webView1);
mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
mWebview.getSettings().setLoadWithOverviewMode(true);
mWebview.getSettings().setUseWideViewPort(true);
mWebview.getSettings().setBuiltInZoomControls(true);
mWebview.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pd.show();
}
@Override
public void onPageFinished(WebView view, String url) {
pd.dismiss();
String webUrl = mWebview.getUrl();
}
});
mWebview .loadUrl("www.google.com");
How to implement the Progress Dialog in webview before loading an image?
You have not initialize your progress dialog,
progress= ProgressDialog.show(this, "Title","Message", true);
or,
progress= new ProgressDialog(getActivity());
progress.setMessage("Please wait...");
progress.setIndeterminate(false);
progress.setCancelable(false);
progress.show();
and you can call progress.dismiss() to hide the dialog
EDIT
View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
WebView webview = (WebView)rootView.findViewById(R.id.webView2);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setUseWideViewPort(false);
webview.loadUrl("file:///android_asset/index1.html");
progress= new ProgressDialog(getActivity());
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progress.setMessage("Please wait...");
progress.setIndeterminate(false);
progress.setCancelable(false);
progress.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progress.dismiss();
}
});
return rootView;
}
Add a Progress Bar in WebView
I have added few lines in your code and now its working fine with progress bar.
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main );
// Makes Progress bar Visible
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
webview = (WebView) findViewById(R.id.webview);
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
//Make the bar disappear after URL is loaded, and changes string to Loading...
setTitle("Loading...");
setProgress(progress * 100); //Make the bar disappear after URL is loaded
// Return the app name after finish loading
if(progress == 100)
setTitle(R.string.app_name);
}
});
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.google.com");
How can I display a progress dialog until web view is finished loading?
You can override WebViewClient's onPageFinished(WebView view, String url) method.
WebView myFacebookWebView = (WebView) view.findViewById(R.id.webview_facebook);
WebSettings webSettings = myFacebookWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myFacebookWebView.setWebChromeClient(new WebChromeClient());
// START PROGRESS DIALOG HERE
myFacebookWebView.loadUrl("https://www.google.com/");
myFacebookWebView.setWebViewClient(new WebViewClient()
{
public void onPageFinished(WebView view, String url)
{
// DISMISS PROGRESS DIALOG HERE
}
}
);
Unable to dismiss Progress dialog after loading a page in Webview
Make sure that if(progressDialog!=null && progressDialog.isShowing())
this condition returns true. Put a break point there and make sure they both are true.
try
progressDialog.hide()
Progress dialog not dismiss after (progress == 100) in webview
You should still use onPageStarted and onPageFinished.
From my experience, using progress percentage will reach 100 even if the webpage fails to load, so that won't work.
boolean loadingFinished = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ProgressDialog progressDialog = new ProgressDialog(Webview.this );
progressDialog.setMessage("ProgressDialog Body");
progressDialog.show();
WebView webview= (WebView) findViewById(R.id.webViewID);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getApplicationContext(), description, Toast.LENGTH_SHORT).show();
}
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loadingFinished = false;
}
public void onPageFinished(WebView view, String url) {
loadingFinished = true;
progressDialog.cancel();
}
});
webview.setWebChromeClient(new WebChromeClient());
webview.loadUrl("http://hop.betfanplus.com/10000/0/mega4");
}
Related Topics
Flag_Activity_New_Task Clarification Needed
Firebase Servervalue.Timestamp in Java Data Models Objects
How to Edit the Text Files in Assets Folder in Android
Change Order of Views in Linear Layout Android
Android M Write to Sd Card - Permission Denied
How Many Activities Vs Fragments
Why Should We Use Sp for Font Sizes in Android
Flutter: How to Fix "A Renderflex Overflowed by Pixels " Error
How to Adjust Text Kerning in Android Textview
Provide the Caller Id for Incoming Call from My Own App
Recyclerview with Multiple Countdown Timers Causes Flickering
Getting Error "Gradle Dsl Method Not Found: 'Compile()'" When Syncing Build.Gradle
How to Integrate Samsung Gear Steps in Android Application
Finding Android Sdk on MAC and Adding to Path
Not Enough Space to Show Ad (Admob)