进度对话框和方向已更改

时间:2010-07-28 16:27:38

标签: android

我在进度对话框中遇到了一些问题。我使用托管进度对话框向用户显示正在使用onCreateDialog(int id)函数中编写的以下代码执行操作:

          case PROGRESS_DIALOG :
            {
                dialog = new ProgressDialog(this);                                      
                dialog.setMessage(getResources().getString(R.string.eStrUpdating));
                dialog.setCancelable(true);
                dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
                {
                    public void onCancel(DialogInterface dialogInterface)
                    {
                       Log.i(TAG,"progress dialog cancelled ");
                    }
                });
                return dialog;
            }

当操作完成时,我调用dismissDialog(PROGRESS_DIALOG)。问题是如果我在显示进度对话框时旋转手机,那么当操作完成时,解除通话无效并且进度仍然显示。而我无法理解为什么。

2 个答案:

答案 0 :(得分:6)

旋转手机时,“活动”将被销毁并重新创建。然后你应该在你的对话框中调用dismiss,在你的活动的onDestroy方法中重新创建它。

答案 1 :(得分:2)

我同意上述答案。当您的方向发生变化时,您的活动将被销毁并重新创建。

我改变方向的经验是:

  • 我的对话框不会自动获取 被解雇,但似乎在视觉上 消失得一样(可能 泄漏?)
  • 我维护了一个实例变量 活动中的对话框并检查 null以查看对话框是否正在显示 在onDestroy和 的onSaveInstanceState
  • 我在onDestroy中删除对话框
  • 我实施了一个 DialogInterface.onDismissListener如此 我可以看到对话框的时间 被解雇(可能是用户要求)
  • 我写了一个布尔值 onSaveInstanceState(布尔值 表示对话框正在显示)
  • 在活动中onCreate我寻找 捆绑中的这个布尔值 再次调用showDialog

HTH。