2012-02-16 113 views
9

我得到了在web视图中显示活动指示器的代码。我检查了多个参考文献,但仍然无法正常工作。你能帮我调试我的代码吗?android webview客户端活动指示器

活性指示器不与下面的代码来下面代码

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); 
} 

回答

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

写在活动的onCreate方法。

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

创建ChromeClient类在同一活动。

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

相应地声明对象。回到我身边如果你仍然面临错误。我将提供完整的源代码。

+0

非常感谢你 – png 2012-02-16 12:42:36

+0

ChromeClient类中没有进度对象 – Rajan 2015-10-17 22:36:37

3

我无法发表评论,因为我没有足够的声望点,只是对已接受的答案进行了快速评论:在检查对话框是否显示之前检查是否为空。这将避免可怕的NPE。

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