在我的活动中,我使用微调器和编辑框创建了一个自己的对话框。我得到的问题是方向改变 - 我每次都有例外,所以:
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();
答案 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。在我的回答中,实际上展示了如何在方向改变后恢复微调器菜单,但您可以轻松选择不这样做。