【问题标题】:Android: Dialog etc restore after rotation changedAndroid:旋转更改后对话框等恢复
【发布时间】:2010-09-11 02:26:04
【问题描述】:

旋转屏幕后如何恢复对话框等?例如,弹出一个 alertDialog 告诉用户一些信息。然后用户将屏幕旋转到另一个方向。如何恢复alertDialog?任何人都可以指导我这样做吗?谢谢!

稍后添加:

我查看了android源代码并找到了这些东西:

对话框存储在mManagedDialogs,相关信息为:

mManagedDialogs = new SparseArray<ManagedDialog>();

onSaveInstanceState相关:

final void performSaveInstanceState(Bundle outState) {
    onSaveInstanceState(outState);
    saveManagedDialogs(outState);
}

saveManagedDialogs中,与mManagedDialogs有关。

onRestoreInstanceState相关:

final void performRestoreInstanceState(Bundle savedInstanceState) {
    onRestoreInstanceState(savedInstanceState);
    restoreManagedDialogs(savedInstanceState);
}

restoreManagedDialogs中,与mManagedDialogs有关。

如您所见,对于高级功能,您必须自己完成保存和恢复工作。当您拥有大量自定义对话框时,这可能是一场噩梦。我没有尝试过复杂的对话框(例如输入了 EdiText、listView)。这样,我想警告用户:在对话框中输入信息时切勿旋转屏幕......或者,在显示对话框时动态锁定旋转。

感谢所有回答我的人。希望我的信息也能帮到你。

【问题讨论】:

标签: android dialog rotation restore


【解决方案1】:

【讨论】:

  • 请看我后面的附加文字。
  • 为此 +1。我什至可以嵌套我的对话框 - 我的第一个对话框的肯定按钮会启动一个“确认”对话框,因为该操作涉及删除数据。
  • API 13 中已弃用(“改用 DialogFragment”)
【解决方案2】:

在清单中的活动标签中添加这样的内容

<activity android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:name=".your.package"/>

【讨论】:

    【解决方案3】:

    我采取的方法是不允许操作系统在布局配置更改后重新启动您的活动。为此,请在清单文件中要阻止重新启动的活动中添加此行:

     <activity
     android:configChanges="orientation|keyboard"
     ...
     >
    

    您可以选择在代码中处理配置更改,以防您想要手动进行一些布局更改,例如从 XML 重新加载新视图。这是通过覆盖 Activity 类中的 onConfigurationChanged() 方法来完成的:

    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        //Handle config changes here, paying attention to
        //the newConfig.orientation value
        super.onConfigurationChanged(newConfig);
    }
    

    编辑:在配置更改列表中添加了“|keyboard”

    【讨论】:

    • 不,对清单文件的此更改只会阻止 Android 在发生特定配置更改(方向)时重新启动您的活动。它不会阻止屏幕旋转。您可能还想为带有滑出键盘的手机添加“键盘”,因为这也会触发重启。
    • 你是对的!我添加了 android:configChanges="orientation|keyboard" 并且它有效!非常感谢!
    • 有效但不推荐。
    • @EdBurnette 关心扩展 Ed?
    • Android 开发人员建议不要实现 onConfigurationChanged,而是正确处理活动销毁和创建。片段是最好的方式,因为它们可以比包含的活动更长寿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多