【问题标题】:Activity screen orientation issue活动屏幕方向问题
【发布时间】:2014-04-22 19:02:04
【问题描述】:

我的Activity通过指定只支持横向模式

android:screenOrientation="sensorLandscape" 

在清单中。

现在,如果我的Activity 位于前台,而其他支持这两种方向的应用程序启动并且用户将方向更改为纵向并回击,那么我的Activity 会崩溃投掷:

android.content.res.Resources$NotFoundException

我猜它会短暂地寻找纵向模式的布局资源,并且布局仅在 layout-land 中,所以它会崩溃。

例如我启动我的应用,锁定屏幕,将设备旋转到纵向模式,解锁设备,然后我可以看到崩溃和 ANR。

知道如何解决这个问题吗?

【问题讨论】:

    标签: android android-layout android-manifest android-orientation


    【解决方案1】:

    将您的布局复制到纵向目录(res/layout),在系统尝试渲染您的布局的这个短暂时刻,它不会因找不到资源异常而崩溃

    【讨论】:

    • 实际上应该完全移除布局区域。
    • @donfuxx 这很有意义,所以在这种情况下,清单中应该只有layout 文件夹和android:screenOrientation="sensorLandscape"
    【解决方案2】:

    只需要将相同的 xml 副本复制到 res/layout,我认为它应该可以工作,因为 android 根据相应文件夹(标识符文件夹)中设备的当前配置(如方向、屏幕大小等)搜索所有应用程序资源,如果它在该文件夹中找不到,那么 android 将在默认文件夹中扩展他们的搜索`如 res/layout、res/drawable、res/string 等。

    那么你的应用崩溃的原因Your layout was not present in default folder, so whenever configuration was other then landscape it will definitly crash.

    标识符文件夹示例。

    res/ layout/ main.xml ---> for portrait screen
    layout-land/ main.xml ---> for landscap screen
    
    res/ layout/ # default (portrait)
    main.xml layout-land/ # landscape
    main.xml layout-large/ # large (portrait)
    main.xml layout-large-land/ # large landscape
    main.xml
    
    res/ drawable-xhdpi/
    awesomeimage.png
    drawable-hdpi/
    awesomeimage.png
    drawable-mdpi/
    awesomeimage.png
    drawable-ldpi/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多