Android:旋转更改后的Dialog等恢复

时间:2010-09-11 02:26:04

标签: android dialog rotation restore

旋转屏幕后如何恢复对话框等?例如,弹出一个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,比如说)。这样,我想警告用户:在对话框中输入信息时不要旋转屏幕...或者,在显示对话框时动态锁定旋转。

感谢所有回答我的人。希望我的信息也能为您提供帮助。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:-5)

在清单

的活动代码中添加如下内容
<activity android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:name=".your.package"/>

答案 2 :(得分:-16)

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

 <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”