Android:旋转更改后对话框等恢复

Android: Dialog etc restore after rotation changed(Android:旋转更改后对话框等恢复)
本文介绍了Android:旋转更改后对话框等恢复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

How to restore the dialog etc after rotating the screen? For example, pop up an alertDialog to tell user some information. then the user rotate the screen to another orientation. How to restore the alertDialog? Can any one guide me to do it? Thanks!

稍后添加:

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

I looked into the android source code and find these things:

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

Dialogs are stored in mManagedDialogs, and the related information is:

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).通过这种方式,我想警告用户:在对话框中输入信息时切勿旋转屏幕......或者,在显示对话框时动态锁定旋转.

As you can see, for advanced feature, you must do the saving and restoring job by yourself. It may be a night mare when you have tons customized dialogs. I have not tried the complex dialog (has input EdiText, listView, say). In this way, I'd like to warn users: Never rotate the screen when inputing your info in the dialog... OR, lock the rotation dynamically when showing the dialog.

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

Thanks for all the people who answered me. Hope my information help you too.

推荐答案

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

The approach I took was to not allow the OS to restart your activity after the layout configuration change. To accomplish this, add this line within activities that you want to prevent from restarting in your manifest file:

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

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

Optionally, you can handle the configuration change in code in case there are some layout changes you want to make manually, such as reloading a new view from XML. This is done by overwriting the onConfigurationChanged() method in your Activity class:

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

在配置更改列表中添加了|keyboard"

Added "|keyboard" to the list of config changes

这篇关于Android:旋转更改后对话框等恢复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How To Create a Rotating Wheel Control?(如何创建转轮控件?)
iOS 6 rotations: supportedInterfaceOrientations doesn#180;t work?(iOS 6 旋转:supportedInterfaceOrientations 不起作用?)
CABasicAnimation rotate returns to original position(CABasicAnimation 旋转返回原始位置)
How to avoid restarting activity when orientation changes on Android(如何在 Android 上的方向更改时避免重新启动活动)
UITabBarController Rotation Issues in ios 6(ios 6 中的 UITabBarController 旋转问题)
iOS: How to run a function after Device has Rotated (Swift)(iOS:设备旋转后如何运行函数(Swift))