我有以下代码。我在一项活动中使用了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;
}
答案 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时,您只会以这种方式忽略前一个