首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >方向更改时不重新加载应用程序

方向更改时不重新加载应用程序
EN

Stack Overflow用户
提问于 2011-05-06 22:50:55
回答 17查看 146.6K关注 0票数 155

我只需要在屏幕旋转时不做任何更改。我的应用程序在第一次加载时显示一个随机图像,旋转设备不应该选择另一个随机图像。我如何(简单地)让这种行为停止?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-05-06 23:11:28

通常有三种方法可以做到这一点:

  1. 正如一些答案所建议的,您可以区分第一次创建活动和从savedInstanceState恢复活动的情况。这是通过覆盖onSaveInstanceState来完成的,检查onCreate.
  2. You的参数可以通过将android:screenOrientation="portrait" (或"landscape")添加到清单中的<activity>来将活动锁定在一个方向上。
  3. 您可以通过在<activity>标记中指定android:configChanges="orientation|screenSize"来告诉系统您打算自己处理屏幕更改。这样,活动将不会被重新创建,而是会收到一个回调(您可以忽略它,因为它对您没有用处)。

就我个人而言,我会选择(3)。当然,如果将应用程序锁定到其中一个方向上没有问题,您也可以使用(2)。

票数 262
EN

Stack Overflow用户

发布于 2012-07-29 03:32:11

Xion的回答很接近,但#3 (android:configChanes="orientation")不会工作,除非应用程序的API级别为12或更低。

在API级别13或更高版本中,屏幕大小会随着方向的改变而改变,因此这仍然会导致活动在方向改变时被销毁并启动。

只需添加"screenSize“属性,如下所示:

代码语言:javascript
复制
<activity
    android:name=".YourActivityName"
    android:configChanges="orientation|screenSize">
</activity>

现在,当您更改方向(以及屏幕大小更改)时,activity保持其状态,并调用onConfigurationChanged()。当方向改变时,这将保留屏幕上的任何内容(例如:Webview中的网页)。

从这个网站上学到的:http://developer.android.com/guide/topics/manifest/activity-element.html

此外,这显然是一种糟糕的做法,因此请阅读下面有关处理运行时更改的链接:

http://developer.android.com/guide/topics/resources/runtime-changes.html

票数 217
EN

Stack Overflow用户

发布于 2013-10-26 01:59:59

你只需要去AndroidManifest.xml,在你的活动标签里面,你必须输入这行代码,就像上面有人说的那样:

代码语言:javascript
复制
android:configChanges="orientation|screenSize"

所以,你会得到类似这样的东西:

代码语言:javascript
复制
<activity android:name="ActivityMenu"
android:configChanges="orientation|screenSize">
</activity>

希望它能起作用!

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5913130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档