【问题标题】:Android orientation won't change after first turn第一次转弯后Android方向不会改变
【发布时间】:2012-03-04 01:33:03
【问题描述】:

我正在制作一个从纵向开始的简单屏幕。第一次切换到横向后,它工作得很好。 虽然当我尝试切换回纵向时,屏幕仍保持横向。

有什么想法吗?

那个“一个”活动的清单代码

 <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>

【问题讨论】:

  • 此 XML 表示您的应用将处理方向更改。因此,在您执行此操作的位置显示代码对您更有帮助。尽管如此,如果你的目标是 API 13+,你也应该处理 screenSize
  • 我的活动没有处理方向变化,这会导致它保持横向吗?

标签: android orientation


【解决方案1】:

您的清单对 Android 撒谎。您的 android:configChanges 声明您的应用程序将处理方向更改,但事实并非如此。 Docs:

android:configChanges

列出活动将自行处理的配置更改。当运行时发生配置更改时,默认情况下会关闭并重新启动 Activity,但使用该属性声明配置会阻止 Activity 重新启动。相反,活动保持运行并调用其 onConfigurationChanged() 方法。

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

【讨论】:

    【解决方案2】:

    有一个已知的long-standing emulator bug 表现出这种一次性切换行为——因此,如果您使用的是模拟器,则可以解释该问题。

    为了解释第一个方向开关,我认为:

    1. 当您进行切换时,您实际上并没有在 LoginActivity 上,而是另一个没有设置 configChanges="orientation... 标志的活动。

    2. 或者您可能在启动应用程序之前更改了方向,例如从主屏幕。然后您的应用以横向方式启动,当您尝试更改方向时不会响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-23
      • 2017-05-09
      • 1970-01-01
      • 2015-07-21
      • 2015-02-03
      • 2013-11-14
      • 2014-01-05
      • 1970-01-01
      相关资源
      最近更新 更多