【问题标题】:Android: Why my progress dialog not disappear?Android:为什么我的进度对话框没有消失?
【发布时间】:2013-09-03 10:44:15
【问题描述】:

我有以下代码。我在活动中使用 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;

}

【问题讨论】:

    标签: android android-fragments progressdialog


    【解决方案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();}
            }
    
        });
    

    【讨论】:

    • 我明天试试。感谢您的建议。
    【解决方案2】:

    在每次进度更改时,您都会创建一个新的 ProgressDialog,因此最终您会有很多对话框,并且您只会在进度为 100 时以这种方式关闭顶部的对话框

    【讨论】:

    • 我也是这么想的。但我试图从 shouldOverrideUrlLoading 方法内部调用 ProgressDialog。有了这个,应该只有 1 个 pd 但它并没有消失。
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多