Android:进度对话微调器不旋转

时间:2010-06-25 16:23:43

标签: android dialog progress-bar progress

这似乎是一个Android范围的问题,您可以在视图中的API演示中看到 - >进度条 - >对话框。

基本上,如果您显示进度对话框,它会在第一时间按预期工作。如果你将其关闭并再次显示(不破坏活动或类似的东西),旋转的图像就会停止旋转。在API演示中,您可以通过单击“显示不确定”,按回以关闭对话框,然后再次单击按钮来查看此内容。

我已经尝试构建自己的进度对话框,但它显示了同样的问题,问题在于“ProgressBar”旋转图像。

我想知道是否有人解决此问题。

5 个答案:

答案 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所述。您应该在主代码中创建并显示进度对话框,而不是使用showDialogonCreateDialog

答案 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

查看完整易于理解的教程