隐藏与微调器的对话框

时间:2011-04-08 07:54:08

标签: android view dialog crash

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

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):at   android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:385)   ERROR / AndroidRuntime(2928):at   android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:230)   ERROR / AndroidRuntime(2928):at   android.view.Window $ LocalWindowManager.removeView(Window.java:432)   ERROR / AndroidRuntime(2928):at   android.app.Dialog.dismissDialog(Dialog.java:290)   ERROR / AndroidRuntime(2928):at   android.app.Dialog.access $ 000(Dialog.java:78)   ERROR / AndroidRuntime(2928):at   android.app.Dialog $ 1.run(Dialog.java:123)   ERROR / AndroidRuntime(2928):at   android.app.Dialog.dismiss(Dialog.java:280)

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

mMyDialog.hide()一样,它也是一样的。

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

答案 2 :(得分:0)

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