我使用Progress Dialog,第一次加载Web视图并在OnCreate中创建对象
progressBar = new ProgressDialog(this);
progressBar.setCancelable(true);
progressBar.setMessage("Loading...");
progressBar.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface arg0) {
if (progressBar.isShowing())
progressBar.dismiss();
finish();
}
});
progressBar.show();
并将其解雇onPageFinished
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "Finished loading URL: " + url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
然后我从菜单中加载另一个url然后我在onPageStarted中编写代码
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if(progressBar.isShowing()){}
else
//progressBar.
progressBar.show();
super.onPageStarted(view, url, favicon);
}
第二次Dialog中的圆圈没有运行,一切正常。 你可以在ApiDemos alos中查看同样的问题。 请在设备中安装Apidemos应用程序然后转到view->进度条 - >对话框 - >点击“show Intermediat” 然后使用后退按钮关闭。现在添加单击相同按钮,圆圈动画将正常工作
先谢谢。
答案 0 :(得分:0)
这个问题与活动有关,因为当我们关闭对话框活动存储它的值时,第二次调用它加载相同的对话状态,所以需要实现onPrepareDialog来重置新值并使用removeDialog(int)在展示之前。请查看ProgressBar does not reset to "0" when opening the second time
代码
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DIALOG_WEBVIEW:
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressBar.setMessage("Loading...");
progressBar.setCancelable(true);
//mProgressDialog.show();
return;
default:
return ;
}
//super.onPrepareDialog(id, dialog);
}
for onCreateDialog
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_WEBVIEW:
progressBar = new ProgressDialog(this);
progressBar.show();
return progressBar;
default:
return null;
}
}
最后显示,解雇和删除这样的
removeDialog(DIALOG);
showDialog(DIALOG);
dismissDialog(DIALOG);