Android:为什么我的进度对话框不会消失?

时间:2013-09-03 10:44:16

标签: android android-fragments progressdialog

我有以下代码。我在一项活动中使用了4个片段。该片段有一个webView。但是如您所知,为片段准备所有数据需要很长时间。所以我想在数据准备时使用进度对话框。是的,我打电话给它,现在,只是在完成进度后试图解除progressDialog。但我觉得它很像我。不去任何地方。任何帮助?感谢。

(注意:我已经从我的项目中删除了代码。现在又添加回来了,所以我可能会犯一些小错误。不要陷入其中。)

   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    final ProgressDialog pd = new ProgressDialog(getActivity()) ;       
    if (wv != null) {
         wv.destroy();
    }     
     wv = new WebView(getActivity());
     wv.getSettings().setJavaScriptEnabled(true);                     


     wv.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {pd = ProgressDialog.show(this, "", "Loading...", true);
             Log.e("Progress:", ""+progress);
             if(progress == 100){pd.dismiss();}
            }

        });


     wv.setWebViewClient(new WebViewClient(){

         @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                Log.e("Connection:", "NO");
            }
      @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {   
                view.loadUrl(url);
                return true;
            }
     });    

     wv.loadUrl("http://mobile.twitter.com/Yali_Spor");  


     wva = true;

     return wv;

}

2 个答案:

答案 0 :(得分:1)

这样做 -

   final ProgressDialog pd;      
if (wv != null) {
     wv.destroy();
}     
 wv = new WebView(getActivity());
 wv.getSettings().setJavaScriptEnabled(true);                     


 wv.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress)
        {pd = ProgressDialog.show(this, "", "Loading...", true);
         Log.e("Progress:", ""+progress);
         if(progress == 100){pd.dismiss();}
        }

    });

答案 1 :(得分:1)

在每次进度更改时,您都会创建一个新的ProgressDialog,以便最终在最后有很多对话框,并且当进度为100时,您只会以这种方式忽略前一个