2012-02-16 16 views
9

ウェブビューでアクティビティインジケータを表示するためのコードがあります。私は複数のリファレンスをチェックしても、それを動作させることができませんでした。以下のコードをデバッグするのに手伝ってください。android webview client activityインジケータ

活動の指標には、コードの書き込み活動のonCreateメソッドのコード以下

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

以下に来ていません。

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

+0

ChromeClientクラスに進捗オブジェクトがありません – Rajan

3

私は評判のポイントが足りないので、コメントを投稿できませんが、受け入れられた回答には簡単なコメントしかありません。ダイアログが表示されているかどうかを確認する前に、ヌルを確認してください。これは恐ろしいNPEを避けるでしょう。

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