0

我有活动:

android:screenOrientation="portrait"

和代码:

if(blah blah blah)
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

在活动 onCreate。1. 在智能手机上测试时“setRequestedOrientation”会导致破坏活动并以所需的屏幕方向再次创建。2. 在平板设备上测试时,此代码仅运行一次活动。在“setRequestedOrientation”之后它只是继续而不破坏并再次创建活动。当在没有调试器或 onCreate 中没有断点的情况下启动代码时会发生这种情况。如果我停止 onCreate 函数 - 我在日志中看到 - 再次破坏和 onCreate。如何用平板电脑捕捉特定情况?

更新: - 如果“方向锁定”关闭,平板电脑会出现问题。如果启用了“方向锁定”,程序的工作方式与智能手机相同。

UPDATE2: - 是否可以将首选屏幕方向设置为整个应用程序。因此,当活动开始知道所需的方向时。这将使不必要的调用“setScreenOrientation”并避免创建第二个活动。

4

3 回答 3

1

在解决这个问题一整天之后,我在我的应用程序中进行了以下更改: 1. 每个活动/没有第一个/都被声明为 android:screenOrientation="behind"。2. 在第一个活动中,我使用用户选择的模式/从我的菜单设置首选屏幕方向。3. 仅当用户在我的菜单选项中更改模式时,我才调用 setRequestedOrientation。

这会导致活动只创建一次。最后:)

于 2012-04-26T10:42:12.847 回答
0

你可以设置

<activity ActivityName = "test_activity"
android:configChanges="orientation">
</activity>

在你的 android 清单文件中。它不允许活动在方向更改时重新启动,但 onconfigurationchange 将被正常调用。稍后您可以在 onconfigurationchange 中获取显示方向并设置您想要的任何内容。

于 2012-04-24T12:08:12.920 回答
0

不..您不能为整个应用程序设置首选屏幕方向...相反,您应该只在各自的活动中调用 setScreenOrientation ...请在此处参考此链接...

于 2012-04-24T12:17:26.947 回答