我创建了一个webview,当页面加载时,会有一个ProgressDialog。好吧,直到这一切都有效。 但是现在我想要在加载url后解除ProgressDialog。 这不起作用。
我的代码:
$ ->
$('.datepicker').datepicker()
return
$('.flexdatalist').flexdatalist minLength: 1
$(document).ready ->
$('.phoneMask').inputmask '(99) 9999[9]-9999'
$('.cpfMask').inputmask '999.999.999-99'
$('.cnpjMask').inputmask '99.999.999/9999-99'
$('.dateMask').inputmask '99/99/9999'
return
$ ->
$('.valorMask').maskMoney()
return
答案 0 :(得分:1)
将变量传递给匿名类时,变量会自动变为final,从而阻止变量。尝试将进度对话框作为内部客户端类的成员。这也是一种更好的设计,使您的代码更易于维护。
class MyClient extends WebViewClient() {
private ProgressDialog progressDialogWebViewNews;
public MyClient(Context c){
progressDialogWebViewNews = new ProgressDialog(c);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressDialogWebViewNews.setCancelable(false);
progressDialogWebViewNews.setTitle("Demo...");
progressDialogWebViewNews.setMessage("Demo");
progressDialogWebViewNews.show();
}
@Override
public void onPageFinished(WebView view, String url) {
progressDialogWebViewNews.dismiss();
super.onPageFinished(view, url);
}
}
webViewNews.setWebViewClient(new MyClient(MainActivity.this));
答案 1 :(得分:0)
删除super.onPageFinished(view, url)
,然后首先检查是否显示进度对话框,然后再在回调方法中将其关闭。
If (progressDialogWebViewNews.showing){
progressDialogWebViewNews.dismiss();
}
答案 2 :(得分:-1)
也许你应该创建一个简单的WebView对象:
WebView webView = (WebView) getActivity().findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("yourURL");
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Loading...");
progressDialog.show();
progressDialog.setCancelable(false);
webView.setWebViewClient(new WebViewClient()
{
public void onPageFinished(WebView view, String url)
{
progressDialog.dismiss();
}
});
它对我有用。