在我的Android应用程序中,当我旋转设备(滑出键盘)时,“活动”将重新启动(调用onCreate)。现在,这可能是应该的,但我在onCreate方法中做了很多初始设置,所以我需要:
将所有初始设置放在另一个功能中,这样不会在设备旋转或使其不再调用Create,布局仅调整或将应用程序限制为仅肖像,以便不调用onCreate。
在我的Android应用程序中,当我旋转设备(滑出键盘)时,“活动”将重新启动(调用onCreate)。现在,这可能是应该的,但我在onCreate方法中做了很多初始设置,所以我需要:
将所有初始设置放在另一个功能中,这样不会在设备旋转或使其不再调用Create,布局仅调整或将应用程序限制为仅肖像,以便不调用onCreate。
当前回答
我刚刚发现了这个传说:
为了通过方向更改保持活动活动,并通过onConfigurationChanged处理活动,上面的文档和代码示例在Manifest文件中建议:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
这有一个额外的好处,那就是它总是有效的。
另一个好处是,省略keyboardHidden可能看起来合乎逻辑,但它会导致模拟器失败(至少对于Android 2.1):只指定方向会使模拟器有时同时调用OnCreate和onConfigurationChanged,而其他时候只调用OnCreate。
我还没有看到设备出现故障,但我听说过其他设备的仿真器出现故障。因此值得记录。
其他回答
onConfigurationChanged is called when the screen rotates.
(onCreate is no longer called when the screen rotates due to manifest, see:
android:configChanges)
清单的哪个部分告诉它“不要调用onCreate()”?
而且谷歌的文档说要避免使用android:configChanges(除非作为最后手段)。但是,他们建议的替代方法都使用android:configChanges。
根据我的经验,模拟器总是在旋转时调用onCreate()。但我运行相同代码的1-2台设备……没有。(不知道为什么会有什么不同。)
将以下代码放在Android清单中的活动中。
android:configChanges="orientation"
当你改变方向时,这不会重新开始你的活动。
每次旋转屏幕时,打开的活动都会完成,并再次调用onCreate()。
1.当屏幕旋转时,您可以做一件事来保存活动状态,这样,当再次调用活动的onCreate()时,您就可以恢复所有旧的内容。参考此链接
2.如果要阻止重新启动活动,只需在manifest.xml文件中放置以下行。
<activity android:name=".Youractivity"
android:configChanges="orientation|screenSize"/>
很简单,只需执行以下步骤:
<activity
android:name=".Test"
android:configChanges="orientation|screenSize"
android:screenOrientation="landscape" >
</activity>
这对我有用:
注意:方向取决于你的要求
我只是简单地补充了一句:
android:configChanges="keyboard|keyboardHidden|orientation"
在AndroidManifest.xml文件中,并且没有在我的活动中添加任何onConfigurationChanged方法。
所以,每当键盘滑出或滑入时,什么都不会发生!也可以查看这篇关于这个问题的文章。