2012-02-16 120 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()) { ... }