【问题标题】:Hiding dialog with spinner用微调器隐藏对话框
【发布时间】:2011-04-08 07:54:07
【问题描述】:

在我的活动中,我创建了一个带有微调器和编辑框的自己的对话框。我遇到的问题是方向改变 - 我每次都遇到异常,所以:

1) 我在清单中的活动部分添加了android:configChanges="orientation|keyboardHidden"

2) 在我的 Activity 中实现了 onConfigurationChanged,看起来更像这样:

 @Override
    public void onConfigurationChange(Configuration newConfiguration) {
    super.onConfigurationChange(newConfiguration);
    if (mMyDialog != null && mMyDialog.isShowing() ) {
    mMyDialog.dismiss();
    }

大多数情况下它工作正常,但有时当我启动我的对话框时,激活 Spinner(启动 Spinners Pop-Up)并改变我得到的方向:

错误/AndroidRuntime(2928):在 android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:385) 错误/AndroidRuntime(2928):在 android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:230) 错误/AndroidRuntime(2928):在 android.view.Window$LocalWindowManager.removeView(Window.java:432) 错误/AndroidRuntime(2928):在 android.app.Dialog.dismissDialog(Dialog.java:290) 错误/AndroidRuntime(2928):在 android.app.Dialog.access$000(Dialog.java:78) 错误/AndroidRuntime(2928):在 android.app.Dialog$1.run(Dialog.java:123) 错误/AndroidRuntime(2928):在 android.app.Dialog.dismiss(Dialog.java:280)

所以看起来对话框没有按时解除?也许我应该重写 MyDialog 类中的 dismiss() 方法并确保所有控件都“关闭”? 我的对话框类创建如下:

mMyDialog = new MyDialog(this);
mMyDialog.show();

【问题讨论】:

    标签: android view dialog crash


    【解决方案1】:

    也许你可以试试 mMyDialog.hide();对话框类的功能

    【讨论】:

      【解决方案2】:

      显示带有微调器的对话框时,我有一个idea to prevent orientation changes,但发现there is no reliable way to do that。我找到的最佳解决方案是replace spinner with a button。在我的回答中实际展示了如何在方向更改后恢复微调器菜单,但您可以轻松选择不这样做。

      【讨论】:

        【解决方案3】:

        对于mMyDialog.hide(),它的行为相同。

        我还补充说,MyDialog 构造函数中的this 是一个Context 对象。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多