【问题标题】:android webview client activity indicatorandroid webview 客户端活动指示器
【发布时间】:2012-03-07 19:43:26
【问题描述】:

我得到了在 web 视图中显示活动指示器的代码。我检查了不止一个参考,但我仍然无法让它工作。您能帮我调试一下下面的代码吗?

活动指示器没有附带以下代码

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

【问题讨论】:

    标签: android android-activity webview indicator


    【解决方案1】:
    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!");
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      相应地声明对象。如果您仍然面临错误,请回复我。我会提供完整的源代码。

      【讨论】:

      • ChromeClient 类中没有进度对象
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        科特林片段:

        myProgressBar.show()
        
        myWebView.webViewClient = object : WebViewClient() {
            override fun onPageFinished(view: WebView, url: String) {
                myProgressBar.hide()
            }
        }
        

        将此扩展功能添加到您的扩展文件中:

        fun View.show() {
            visibility = View.VISIBLE
        }
        
        fun View.hide() {
            visibility = View.GONE
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-28
          • 2011-09-12
          • 1970-01-01
          • 1970-01-01
          • 2014-09-10
          • 1970-01-01
          相关资源
          最近更新 更多