getDrawable返回null

时间:2015-10-16 10:09:17

标签: android bitmap drawable

Pff,这是废除你的日程安排的其中一件事,但你不想放弃。由于2天我的部分位图资源不再加载并显示在我的应用中。我把它钉在了getDrawable()上,在提供的ResID上返回null。

我在带有API 22的Genymotion Nexus 5或Nexus 5物理设备上运行此功能。对于我的项目,我主要使用以下内容来加载drawables。

ResourcesCompat.getDrawable(context.getResources(),drawableID,null);

但由于这个问题,我还尝试了 context.getDrawable(id) getResources()。getDrawable(id,getTheme())。每个方法都返回null。

其他可能有趣的事情:

  • 资源在我的项目中(在mdpi,hdpi,xhdpi& xxhdpi)
  • 文件名是正确的(xxx_yyy_zzz.png)
  • 清理项目/删除的构建产品
  • 从我的回购中获取旧图像文件:不加载
  • 资源已被复制并重命名:不加载。
  • 在我的图片编辑器中打开资源并保存为全新文件:不加载。
  • 将资源复制到空的虚拟项目中:它们实际显示!
  • 我的资源的90%完全加载,只是给出了一些较大的位图。
  • 图片确实显示在Android Studio布局预览(Nexus 5,Api 22)
  • 我已经包含了一些测试(比如副本),偶尔会加载,但这种情况很少见。我真正关心的形象永远不会加载。

我也试过单步进入Android代码并在getDrawable(id)上获取这些代码:

  • 抛出新的IllegalStateException("已经设置了覆盖配置")(ContextThemeWrapper.java)
  • 在AssetManager.java中,getResourceValue我看到一个参数是TypedValue类型传递的字符串" res / drawable-xxhdpi-v4 / {image_name} .png"

后者也会引发一些警钟,因为我没有带有-v4后缀的文件夹,所以我想知道为什么会这样做。但是,在Android Studio中单步执行该代码对我来说并没有多大意义,因为进入某个方法通常会让我在Android的注释块中直接出现。

无论如何,我希望有人也有一些关于图像资源的奇怪问题,并且可能能够指出我为什么会发生这种情况的正确方向。事实上,图像没有损坏,而且我的方法调用或资源文件夹中没有发现任何错误,这让我的选择变得有点无可挑剔。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这次发生在我身上的唯一一次是当我放置图像时我试图加载到我的mipmap文件夹而不是普通的drawables文件夹。

当您开始键入R.drawable时。你能看到你的抽奖吗?