Android onCreate()方法在设备旋转时调用两次。(ICS)
我正在开发android平板电脑应用程序,我必须管理应用程序的方向。我遇到一个问题,每次旋转设备时,都会调用onCreate() 我在Honeycomb(3.1)上通过在activity标记的Manifest.xml文件中设置这一行解决了这个问题,它运行良好Android onCreate()方法在设备旋转时调用两次。(ICS),android,Android,我正在开发android平板电脑应用程序,我必须管理应用程序的方向。我遇到一个问题,每次旋转设备时,都会调用onCreate() 我在Honeycomb(3.1)上通过在activity标记的Manifest.xml文件中设置这一行解决了这个问题,它运行良好 android:configChanges="keyboardHidden|orientation" 但当我在ICS平板电脑上测试我的应用程序时,这个问题再次出现。有人知道如何解决这个问题吗 谢谢 尊敬。onCreat
android:configChanges="keyboardHidden|orientation"
但当我在ICS平板电脑上测试我的应用程序时,这个问题再次出现。有人知道如何解决这个问题吗
谢谢
尊敬。
onCreate()
将始终被调用,因为当方向更改时,活动始终会重新创建。这没什么错。您应该为此实施适当的行为,或者通过添加orientation=horizontal来禁用更改方向的可能性,例如,如果您的目标是API level>13
,则必须添加文档中报告的屏幕大小
标志:
android:configChanges="keyboardHidden|orientation|screenSize"
注意:从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕大小”也会改变。因此,如果要防止在为API级别13或更高版本(如minSdkVersion和targetSdkVersion属性所声明)开发时由于方向更改而导致运行时重新启动,则必须在“方向”值之外包含“屏幕大小”值。也就是说,您必须声明android:configChanges=“orientation | screenSize”。但是,如果您的应用程序的目标API级别为12或更低,则您的活动始终会自行处理此配置更改(此配置更改不会重新启动您的活动,即使在Android 3.2或更高版本的设备上运行时也是如此)
参考资料:Hi Marcin,谢谢您的回复。我的问题是,当我输入文本并旋转设备时,我的版面中有EditText,我输入的文本将消失。我的一些活动我在其中设置了一个自定义线程,并显示了我的自定义进度对话框,当我旋转它时,我的自定义线程将被调用两次,我的进度对话框也将消失。因为活动是重新创建的,所以它的整个生命周期都将重新启动。您应该使用saveInstanceState保存编辑的信息。因此,您应该使用onPause()方法将任何持久数据(如用户编辑)写入存储。此外,方法onSaveInstanceState(Bundle)在将活动置于这种后台状态之前调用,允许您将活动中的任何动态实例状态保存到给定的捆绑包中,以便在需要重新创建活动时在onCreate(捆绑包)中接收。“这对我也很有效。”。屏幕大小与重新启动活动有什么关系?非常感谢Blackbelt,不仅是这个问题,您的回答修复了我一天以来遇到的2-3个问题。(y) 难以置信。。。谢谢