我的Activity
仅通过指定
android:screenOrientation="sensorLandscape"
在清单中。
现在,如果我的Activity
位于前台,而另一个支持两种方向的应用程序将启动,用户将方向更改为纵向并返回,则我的Activity
会崩溃:
android.content.res.Resources$NotFoundException
我猜它会短暂地查找纵向模式的布局资源,而布局只在layout-land
中,所以它会崩溃。
E.g。我启动我的应用程序,锁定屏幕,将设备旋转到纵向模式,解锁设备,我可以看到崩溃和ANR。
知道如何解决此问题吗?
答案 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/