2012-03-04 38 views
2

我正在制作一个以纵向方向开始的简单屏幕。第一次切换到横向方向后,它可以很好地工作。 尽管当我尝试切换回肖像时,屏幕仍保持横向。第一回合后Android的方向不会改变

发生了什么事情的任何想法?即 “一” 活动

清单代码

<activity 
      android:name=".LoginActivity" 
      android:label="Login" 
      android:configChanges="orientation|keyboardHidden|keyboard" > 
      <intent-filter> 
       <action android:name="com.DCWebMakers.Vairon.LOGINACTIVITY" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
+1

这个XML表示您的应用程序将负责定位更改。因此,在您这样做的地方显示代码会更有帮助。 Althoug如果你的目标是API 13+,你也应该处理screenSize – 2012-03-04 01:42:21

+0

我的活动没有处理方向变化,这是否导致它保持横向? – Vairon 2012-03-05 00:24:47

回答

2

你的清单是骗Android系统。您的android:configChanges指出您的应用将处理方向更改,但事实并非如此。 Docs

安卓configChanges

列出配置更改该活动将处理本身。当运行时发生配置更改时,该活动默认关闭并重新启动,但使用此属性声明配置将会阻止活动重新启动。相反,该活动仍在运行,并调用onConfigurationChanged()方法。

注意:使用此属性应该避免并仅用作最后的手段。请阅读Handling Runtime Changes以了解有关如何正确处理由于配置更改而导致的重新启动的更多信息。

0

有一个已知的long-standing emulator bug,表现出这种一次性开关行为 - 所以如果您使用模拟器,这可以解释问题。

为了解释第一定向开关,我会认为,要么:

  1. 你不是真正的LoginActivity当你做了开关,但另一项活动是没有configChanges="orientation...标志设置。

  2. 或者,也许您在启动应用程序之前(例如从主屏幕)更改了方向。然后,您的应用程序在横向上启动,并且在尝试更改方向时不会响应。