应用在特定设备上的setContentView上崩溃了

时间:2018-11-15 14:28:44

标签: android layout

我正在横向模式下使用平板电脑应用程序,目前仅支持大型平板电脑。为此,我创建了以下资源目录“ layout-sw720dp-land”,并且在此文件夹中有xml布局。为了以横向模式启动我的活动,我还为清单中的活动设置了screenOrientation属性为landscape。

我正在使用Samsung Tab A(SM-P580)进行测试,并且效果很好。 但是,当客户尝试将我的应用程序加载到他的Samsumg Tab S4(SM-T830)上时,该应用程序在具有以下堆栈跟踪的setContentView()行上崩溃

.DashboardActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f09001c
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2956)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3041)
       at android.app.ActivityThread.-wrap11(Unknown Source)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1711)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6960)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

据我所知,这两种平板电脑都属于同一尺寸的存储桶,因此这两种平板电脑都应该能够从“ layout-sw720dp-land”获取布局文件而没有任何问题。但是由于某些原因,Samsumg Tab S4不允许这样做。 是否有任何特定原因,或者我在这里缺少什么? 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

找出导致问题的原因。在某些三星设备中,用户可以在设置->可访问性->视觉->屏幕缩放和字体下选择屏幕缩放。

对我来说,问题是屏幕缩放设置为最大。实际上,这会降低设备的分辨率,从而使屏幕看起来放大。

结果是,设备分辨率降低了,现在,当我加载应用程序时,它开始从sw-600dp文件夹中查找我没有布局xml的布局,因为我打算安装该应用程序仅在10英寸平板电脑上运行。

因此解决方案是在sw-600dp中添加布局文件,以避免应用崩溃。或要求用户将屏幕缩放设置更改为min,以便设备从sw-720dp存储桶读取布局。