2012-04-24 124 views
2

仔细阅读Android文档约setRequestedOrientation我发现:设置屏幕方向变得可见

  • 更改本次活动的所需方向。如果活动当前处于前台或以其他方式影响屏幕方向,则屏幕将立即更改(可能导致活动重新启动)。否则,这将在下次活动可见时使用。

“否则,这将在下一次活动可见时使用。” 声音很棒 - 只在活动变得可见之前设置。 OOOps。在哪里打电话?其实在onCreate之前,我们没有参考活动。那么如何设置屏幕方向?

更新: - 我的想法是直接创建活动与所需的方向。当用户从设置中选择方向 - 设置屏幕方向和之后开始的所有活动时 - 如果他们使用来自清单/的值,则知道所需的方向/喜欢。如果我知道所需的方向 - 没有理由创建活动,设置方向并重新创建。

+0

你只是试图强制你的活动/应用程序的屏幕方向是特定的东西(风景,肖像)?如果是这样,您可以在Android Manifest中指定该信息。 – Gophermofur 2012-04-24 13:08:26

+0

为什么不尝试将它作为onCreate中的第二行来查看它是否有效?如果我试图回答你的问题,那就是我所要做的。 – mwengler 2012-04-24 13:22:56

+0

希望你现在已经解决了这个问题。我的评论是投票下来的答案。没有更新,您的原始问题没有说明您尝试根据用户偏好设置方向。而旧的答案是基于你投票的结果。 – Hassan 2013-10-02 08:44:08

回答

-1

如果你想将屏幕方向的活动中使用该剪断你的AndroidManifest.xml文件

<activity android:screenOrientation="portrait" android:name="MyActivity"></activity> 

<activity android:screenOrientation="landscape" android:name="MyActivity"></activity> 
+0

开始前我不知道方向。这取决于用户选择的配置。 – Kostadin 2012-04-24 13:27:17

0

似乎prefectly合理把它在OnCreate。

http://russenreaktor.wordpress.com/2010/01/03/solved-set-screen-orientation-programmatically/

如果不工作,你可以尝试把它在onPostCreate(束)覆盖方法。

保护无效onPostCreate(捆绑savedInstanceState)

因为:当活动启动完成后调用的API等级1(后在onStart()和onRestoreInstanceState(包)已被调用)。应用程序通常不会实现这种方法;它旨在让系统类在应用程序代码运行后进行最终初始化。

派生类必须调用超类的此方法的实现。如果他们不这样做,就会抛出异常。