我有以下活动:
android:screenOrientation="portrait"
和代码:
if(blah blah blah)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
活动onCreate。 1.在智能手机上测试“setRequestedOrientation”会导致销毁活动并再次创建所需的屏幕方向。 2.在平板电脑设备上测试时,此代码仅运行一次。在“setRequestedOrientation”之后,它只会继续而不会破坏并再次创建活动。在没有debuger的启动代码或onCreate中没有断点的情况下会发生这种情况。如果我停在onCreate函数 - 我在日志中看到 - 再次破坏和onCreate。 如何用平板电脑捕捉具体情况?
更新: - 如果关闭“方向锁定”,则会出现平板电脑问题。如果启用“方向锁定”,则程序的工作方式与智能手机相同。
UPDATE2: - 是否可以将优先屏幕方向设置为整个应用程序。因此,当活动开始知道所需的方向时。这将使无限制的调用'setScreenOrientation'并避免第二次活动创建。
答案 0 :(得分:1)
在这个问题花了一整天后,我在我的应用程序中进行了以下更改: 1.每个活动/没有第一个/被声明为android:screenOrientation =“后面”。 2.在第一个活动中,我使用用户选择的模式/从我的菜单设置首选屏幕方向。 3.仅当用户在菜单选项中更改模式时才调用setRequestedOrientation。
这会导致只创建一次活动。最终:)
答案 1 :(得分:0)
您可以设置
<activity ActivityName = "test_activity"
android:configChanges="orientation">
</activity>
在您的Android清单文件中。它不允许活动在方向更改时重新启动,但onconfigurationchange将被称为normaly。 稍后您可以在onconfigurationchange中获取显示方向并设置您想要的任何内容。
答案 2 :(得分:0)
否..您无法为整个应用程序设置优先屏幕方向 ...而应仅在相应的活动中调用setScreenOrientation ... Refere this link here...