2015-10-16 94 views
-1

Pff,这是这些东西中的一个会毁掉你的日程安排,但你不想放弃。自2天以来,我的一些位图资源无法加载并显示在我的应用程序中。我将它钉在getDrawable()方法上,在提供的ResID上返回null。getDrawable返回null

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

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

但因为这个问题我也试过context.getDrawable(ID)getResources()。getDrawable(ID,getTheme())。每个方法都返回null。

其他的事情,可能是有趣:

  • 资源是在我的项目(在MDPI,华电国际,xhdpi & & xxhdpi)
  • 文件名的是正确的(xxx_yyy_zzz.png)
  • 清洁项目/删除生成产品
  • 从我的回购中得到旧图像文件:不加载
  • 资源已被复制并重命名:无法加载。
  • 在我的图像编辑器中打开资源并保存为全新文件:不加载。
  • 将资源复制到空虚拟项目中:它们实际显示!
  • 我的资源的90%完美加载,它只是给出问题的几个较大的位图。
  • 该图像在Android Studio布局预览(Nexus 5,Api 22)中显示
  • 我已经包含一些测试(如副本),偶尔会实际加载,但这很少见。我真正关心的图像永远不会加载。

我也尝试步入Android的代码,并得到这些对getDrawable(ID):

  • 抛出新IllegalStateException异常( “覆盖的配置已经设置”)(ContextThemeWrapper.java)
  • 在AssetManager.java,getResourceValue我看到一个参数传递类型的TypedValue的与字符串“RES /可绘-xxhdpi-V4/{IMAGE_NAME} png格式”

后者提出了一些警钟为好,因为我没有带-v4后缀的文件夹,所以我想知道它为什么创建它。但是单步执行Android Studio中的代码对我来说并没有什么意义,因为步入方法通常会让我在Android的评论块中正常工作。

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

在此先感谢。

回答

0

唯一发生在我身上的事情是当我将图像放入我的mipmap文件夹而不是普通的drawables文件夹中时。

当你开始输入R.drawable。你能看到你的drawable吗?

+0

是的,自动完成立即找到我所有的drawable,包括没有加载,只要我输入R.drawable。这些资源实际上是在drawable-mdpi(以及其他所提到的变种)文件夹中。 –