0

Ich versuche, eine einfache App für Android mit progress bar zu erstellen. Alles funktioniert gut. Aber, hier zwei AusgabenAndroid Progressbar auf Webview erscheint zweimal

1) Wenn die Anwendung gestartet wird, kann ich den Fortschritt sehen, der zweimal lädt.

2) Wie kann ich den Fortschrittsbalken deaktivieren, nachdem die Startseite fertig geladen ist? Ich möchte nicht auf jedem Klick die progressbar zeigen ..

Hier ist mein Code

package com.mycom.jquery; 
import android.app.Activity; 

import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.view.Window; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class HelloWebView extends Activity { 

WebView webview; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 

    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_PROGRESS, 
      Window.PROGRESS_VISIBILITY_ON); 

    webview = (WebView) findViewById(R.id.webview); 
    webview.getSettings().setJavaScriptEnabled(true); 

    webview.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

    }); 
    final Activity activity = this; 

    final ProgressDialog progressDialog = new ProgressDialog(activity); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    progressDialog.setMessage("Loading...Jquery.com"); 
    progressDialog.setCancelable(true); 

    webview.loadUrl("http://www.jquery.com"); 

    // WebChromeClient give progress etc info 
    webview.setWebChromeClient(new WebChromeClient() { 

     public void onProgressChanged(WebView view, int progress) { 
      progressDialog.show(); 
      progressDialog.setProgress(0); 
      activity.setProgress(progress * 1000); 

      progressDialog.incrementProgressBy(progress); 

      if (progress == 100 && progressDialog.isShowing()) 
       progressDialog.dismiss(); 
     } 
    }); 

} 

} 
+0

ich nicht wissen, telefonieren kann kommen, warum Sie ** Kunden zwei Mal schaffen? ** dh 'setWebChromeClient()' und 'setWebViewClient()' –

+0

@Prahesh im Neuling .. also keine Idee .. können Sie mir die richtige Richtung –

+0

beide können verwendet werden WebChromeClient ist setIcon, zeigt Alarm etc. während WebViewClient ist einfach. es hängt von Ihrer Notwendigkeit ab, was Sie wollen – Nepster

Antwort

1

ein Flag gesetzt, wenn Fortschritt 100 wird, und dann, wenn das Flag true sofort zurück in Ihre onProgressChanged Implementierung ist.

+0

Dies ist eine bessere Option .. auf diese Weise kann Progressbar initiieren, wann immer erforderlich –

0

this.getWindow(). RequestFeature (Window.FEATURE_PROGRESS); versuchen Sie dies .. aus dem Code entfernt ..

+0

kein Glück .. es ist die gleiche .. progressbar erscheinen zweimal auf App-Start –

2

Versuchen

progressDialog.show(); 

außerhalb von

onProgressChanged(WebView view, int progress) 
+0

funktioniert gut..danke @raju –