为什么Android 4.2会尝试从drawable-xhdpi-v4获取资源

Che*_*eng 6 android

最近,我收到了大量的崩溃报告

android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/flag_au.png from drawable resource ID #0x7f0200bc
    at android.content.res.Resources.loadDrawable(Resources.java:1970)
    at android.content.res.Resources.getDrawable(Resources.java:660)
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,因为崩溃报告来自Android 4.2,设备@ Tab7QC-16

我在xhdpi中有资源.我希望Android 4.2应该从xhdpi中选择资源.

我不打算提供drawable文件夹.因为,我将把mdpi大小的图像放入其中.当目标设备将其扩展到xhdpi时,它看起来不会很好.

我想我可以通过将文件夹xhdpi克隆到xhdpi-v4来"解决"崩溃.

但是,问题是,为什么Android 4会尝试从drawable-xhdpi-v4获取资源?

nat*_*rio 4

在我看来,文件夹资源的工作方式完全相反。

drawable-v4例如,限定符指的是 API 级别 4 及更高级别,而不是更低级别。因此,如果您有这些文件夹:

  • 可绘制的
  • 可绘制-v4
  • 可绘制-v15

drawable-v15文件夹将代表 API 15-23(到目前为止)、drawable-v4API 4-14 以及drawable与以前的文件夹不匹配的 API 级别(因此是 API 1-3)。

从这个意义上说,您可能应该重新格式化您的文件夹。

这是官方文档中的参考页面。由于某种原因,目前我只能用中文加载它(我认为),但查看谷歌缓存似乎支持我的观点。