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的评论块中正常工作。
无论如何,我希望有人对图像资源也有一些奇怪的问题,并且可能能够指出我为什么会发生这种情况的正确方向。事实上,图像没有损坏,我真的没有看到我的方法调用或资源文件夹中的任何错误,使得我没有选择。
在此先感谢。
是的,自动完成立即找到我所有的drawable,包括没有加载,只要我输入R.drawable。这些资源实际上是在drawable-mdpi(以及其他所提到的变种)文件夹中。 –