индикатор активности клиента android webview - PullRequest
9 голосов
/ 16 февраля 2012

Я получил код для отображения индикатора активности в веб-просмотре. Я проверил несколько ссылок, но все равно не смог заставить их работать. Не могли бы вы помочь мне отладить мой код ниже?

Индикатор активности не указан ниже кода

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

Ответы [ 3 ]

43 голосов
/ 16 февраля 2012
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 голосов
/ 16 февраля 2012

Введите приведенный ниже код в методе действия 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);
    }
}

Объявите объекты соответствующим образом.Вернись ко мне, если ты все еще сталкиваешься с ошибкой.Я предоставлю полный исходный код.

3 голосов
/ 08 августа 2015

Я не могу оставить комментарий, потому что у меня недостаточно очков репутации, но просто быстрый комментарий к принятому ответу: Проверьте на нулевое значение, прежде чем проверять, отображается ли диалог.Это позволит избежать страшного NPE.

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