我要重新问这个问题,因为那里有太多不好的信息,这真的很令人沮丧。简而言之,我不希望设备方向发生变化时发生任何变化或发生任何事情。针对此问题的 2 个最流行的“解决方案”是:
1.您可以通过在您的 list 中添加 android:screenOrientation="portrait"(或“landscape”)来将 Activity 锁定在一个方向。
2.您可以通过在标记中指定 android:configChanges="screenOrientation"来告诉系统您打算自己处理屏幕变化。这样, Activity 将不会被重新创建,而是会收到一个回调(您可以忽略它,因为它对您没有用)。
这些都不起作用。所以让我更详细地解释我的特殊问题......
我正在试验一个非常简单的应用程序作为学习练习。我在服务器上有一个文本文件。文本文件中有 1 个东西:一行中的一个整数。这个数字是这台服务器上同时存储的图片文件的数量,图片的名称都是0.jpg、1.jpg、2.jpg等。
我的所有代码都在我的 Activity 的 onCreate 方法中(就像我说的,它是一个简单的应用程序)。
应用程序在运行时执行以下操作:
从文本文件中读取数字。 生成一个从零到文件中数字的随机数。 使用 URL 中的随机数将随机图像加载到 ImageView 中。
当屏幕旋转时,我不希望这一切再次发生。我只是希望什么都不会发生...除了屏幕应该明显旋转并且图像应该缩放以适合它,它确实如此。但每次屏幕旋转时,所有代码都会运行并选择一个新的随机图像。有人可以给我一个简单的解决方案和工作代码来解决这个问题吗?我是通过观察来学习的,如果您不能提供代码示例,那将无济于事。
提前致谢。
ps...我不是在寻找一种不同的方式来做我正在做的事情,这不是重点。我希望修复我目前做这件事的方式。
最佳答案
除非应用程序的 API 级别为 12 或更低,否则使用 android:configChanges="orientation"
的解决方案将不起作用。
在 API 级别 13 或更高版本中,屏幕尺寸会随着方向的改变而改变,因此这仍然会导致 Activity 在方向改变时被销毁并启动。
像下面那样简单地添加“screenSize”属性:
<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
关于Android - 屏幕方向重新加载 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914457/