13

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

4 に答える 4

47
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!");
    }
}
于 2012-02-16T12:09:32.473 に答える
4

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

それに応じてオブジェクトを宣言します。それでもエラーが発生する場合は、私に連絡してください。完全なソースコードを提供します。

于 2012-02-16T12:13:47.987 に答える
3

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

if(pd != null && pd.isShowing()) { ... }
于 2015-08-08T02:06:16.280 に答える