这似乎是一个Android范围的问题,您可以在视图中的API演示中看到 - >进度条 - >对话框。
基本上,如果您显示进度对话框,它会在第一时间按预期工作。如果你将其关闭并再次显示(不破坏活动或类似的东西),旋转的图像就会停止旋转。在API演示中,您可以通过单击“显示不确定”,按回以关闭对话框,然后再次单击按钮来查看此内容。
我已经尝试构建自己的进度对话框,但它显示了同样的问题,问题在于“ProgressBar”旋转图像。
我想知道是否有人解决此问题。
答案 0 :(得分:25)
如果您关闭Dialog
,则不得再次显示相同的实例。要么创建一个新的,要么使用hide()
而不是dismiss()
。使用hide()
时,您不再需要时dismiss()
。
答案 1 :(得分:4)
我正在寻找相同的答案,但是这里的答案都没有对我有用,因为我想使用像Activity.showDialog()
这样的Activity对话框方法,所以我不需要自己管理它们也是如此在轮换时自动重新创建。
与其他一些答案一样,如果在ProgressDialog
上调用dismiss(),它将停止旋转。 Activity.onCreateDialog()
保存对对话框的引用,因此一旦创建它,就不会在下一次Activity.showDialog()
调用时重新创建。它只会调用Activity.onPrepareDialog()
并使用它已有的实例。如果它被解雇,那么它再次显示时不会旋转。
如果您使用Activity.removeDialog()
的ID调用ProgressDialog
而不是调用Dialog.dismiss()
,则可以强制重新创建。这将取消它并删除该引用,以便在接下来调用Activity.onShowDialog()
时,它将使用Activity.onCreateDialog()
而不是Activity.onPrepareDialog()
,并创建一个全新(和旋转)实例。
如果您有ProgressDialog
可以被解雇或取消,请设置一个监听器,以便拨打Activity.removeDialog()
。否则只会被解雇。您也可以在致电Activity.showDialog()
之前调用它。
希望能有所帮助。
答案 2 :(得分:3)
您不必对onCreateDialog
个对象使用ProgressDialog
,如http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog所述。您应该在主代码中创建并显示进度对话框,而不是使用showDialog
和onCreateDialog
。
答案 3 :(得分:1)
您可以在活动中声明ProgressDialog
个实例并覆盖onCreateDialog(int)
。然后,您只需将调用showDialog(int)
的{{1}}电话分配给ProgressDialog
,而不是拨打onCreateDialog(int)
。{/ 1}}。
dialog.show()
答案 4 :(得分:1)
您可以定义类并实现AsyncTask。您可以在doinbackground()方法中定义后台进程。
@Override
protected String doInBackground(String... params) {
publishProgress(new Integer(1));
for(int i=0;i<=300;i++){
System.out.println(i);
}
publishProgress(new Integer(1));
for(int i=301;i<=600;i++){
System.out.println(i);
}
.................
....................
...........................
//your background tasks
publishProgress(new Integer(1));
for(int i=601;i<=900;i++){
System.out.println(i);
}
pd.dismiss();//dismiss the progress dialog here...
return null;
}
您还可以通过onProgressUpdate()方法显示您的进度信息。在http://www.androidcookers.co.cc/2011/12/want-to-run-progress-dialog-in-android.html
查看完整易于理解的教程