在开始活动之前,将其设置为特定方向

7
有没有一种方法可以在不重新创建活动的情况下以特定方向(以编程方式)启动活动?现在,如果我从OnCreate调用setRequestedOrientation并且方向与当前方向不同,则活动将被销毁并重新启动。谢谢。

2
你有解决方案吗? - Rethinavel
3个回答

6
对我来说,解决方案是锁定Activity的方向。 android:screenOrientation="locked" 现在它只依赖于setRequestedOrientation()的设置:
   <activity android:name=".SomeActivity"
      android:label="@string/app_name"
      android:screenOrientation="locked">

不再需要重新启动。

1

你可以在清单文件中设置你的方向。

       <activity android:name=".SomeActivity"
          android:label="@string/app_name"
          android:screenOrientation="portrait">

4
谢谢你,但我想要程序化地实现它,而不是通过XML。 - Snake

0
如果您不想重新启动活动,请在AndroidManifest.xml文件中为该活动添加configChanges。然后通过调用setRequestedOrientation方法来编程设置方向,例如: 但是,如果您希望将活动锁定为一个方向,则最好在清单文件中设置android:screenOrientation="portrait"。

不重新启动活动有什么不利之处? - Snake
请参考此处的configChanges:http://developer.android.com/guide/topics/manifest/activity-element.html。该列表列出了活动将自行处理的配置更改。当运行时发生配置更改时,默认情况下会关闭并重新启动活动,但使用此属性声明配置将防止活动被重新启动。相反,活动保持运行状态,并调用其onConfigurationChanged()方法。您需要在onConfigurationChanged()中处理横向和纵向的布局配置更改。 - UserJava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接