2012-02-16 15 views
9

Recibí el código para mostrar el indicador de actividad en una vista web. Revisé más de una referencia y aun así no pude hacerlo funcionar. ¿Puedes ayudarme a depurar mi código a continuación?android webview indicador de actividad del cliente

indicador de la actividad no está llegando con código de abajo

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    final BaseActivity MyActivity = ReviewWebActivity.this; 
    setContentView(R.layout.review_web); 
    getWindow().setFeatureInt(Window.FEATURE_PROGRESS, 
      Window.PROGRESS_VISIBILITY_ON); 


    ScannedProduct product = getReviewUrl(); 
    reviewUrl = product.getReviewLink(); 

    if (reviewUrl == null) { 
     String err = product.getErrorCode(); 
     if(err.equals("")) err ="No Data Available for this product"; 
     Toast.makeText(getApplicationContext(), 
       "No Data Available for this product", 1).show(); 
     return; 
    } 

    webReview = (WebView) findViewById(R.id.webReview); 
    webReview.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      // Make the bar disappear after URL is loaded, and changes 
      // string to Loading... 
      MyActivity.setTitle("Loading..."); 
      MyActivity.setProgress(progress * 1000); // tried with 100 also 


     } 
    }); 
    webReview.setWebViewClient(new ReviewWebClient()); 
    webReview.getSettings().setJavaScriptEnabled(true); 

    webReview.loadUrl(reviewUrl); 
} 

Respuesta

40
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class SandbarinFacebook extends Activity { 
    WebView mWebView; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...",true); 

     mWebView = (WebView) findViewById(R.id.webkitWebView1); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setSupportZoom(true); 
     mWebView.getSettings().setBuiltInZoomControls(true); 
     mWebView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       if(pd!=null && pd.isShowing()) 
       { 
        pd.dismiss(); 
       } 
      } 
     }); 
     mWebView.loadUrl("http://www.yahoo.co.in"); 
     setTitle("Yahoo!"); 
    } 
} 
4

escriba debajo de código en el método de Actividad onCreate.

webView.setWebChromeClient(new ChromeClient()); 
progress=ProgressDialog.show(this, "", "Loading..."); 
webView.loadUrl(url); 

Crear ChromeClient clase en la misma actividad.

private class ChromeClient extends WebChromeClient { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
     if(newProgress >= 85) { 
      progress.dismiss(); 
     } 
     super.onProgressChanged(view, newProgress); 
    } 
} 

Declare los objetos en consecuencia. Vuelve a mí si todavía te encuentras con un error. Proporcionaré el código fuente completo.

+0

muchas gracias – png

+0

no hay ningún objeto de progreso en la clase ChromeClient – Rajan

3

No puedo publicar un comentario porque no tengo suficientes puntos de reputación, pero solo un comentario rápido sobre la respuesta aceptada: compruebe nulo antes de comprobar si se muestra el cuadro de diálogo. Esto evitará el temido NPE.

if(pd != null && pd.isShowing()) { ... }