旋转屏幕后如何恢复对话框等?例如,弹出一个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,比如说)。这样,我想警告用户:在对话框中输入信息时不要旋转屏幕...或者,在显示对话框时动态锁定旋转。
感谢所有回答我的人。希望我的信息也能为您提供帮助。
答案 0 :(得分:5)
只要您使用Activity#showDialog来显示它并使用Activity#onCreateDialog来创建它,它就会被处理: http://developer.android.com/reference/android/app/Activity.html#showDialog%28int%29
答案 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”