活动屏幕方向问题

时间:2014-04-22 19:02:05

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

我的Activity仅通过指定

支持横向模式
android:screenOrientation="sensorLandscape" 

在清单中。

现在,如果我的Activity位于前台,而另一个支持两种方向的应用程序将启动,用户将方向更改为纵向并返回,则我的Activity会崩溃:

android.content.res.Resources$NotFoundException

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

E.g。我启动我的应用程序,锁定屏幕,将设备旋转到纵向模式,解锁设备,我可以看到崩溃和ANR。

知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:0)

将布局复制到肖像目录(res / layout),在系统尝试渲染布局的这个短暂时刻,它不会从资源未找到异常中崩溃

答案 1 :(得分:0)

只需要将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/