【发布时间】:2013-01-08 10:39:29
【问题描述】:
一段时间以来,我们一直从生产应用程序(通过 Play 商店)收到奇怪的 android.content.res.Resources$NotFoundException 异常。
尝试访问res/values 中声明的字符串资源时通常会出现该错误。
举个具体的例子,在我们的 Application 子类中,我们在 onCreate() 方法中加载一个字符串 ressources(所以在任何应用启动时)。
字符串资源实际上存在于res/values 中,生产应用程序在我们所有的测试设备上都可以正常工作,因此它不会来自R 文件的错误生成。
我们猜测这是因为这些值没有在其他值包(如 values-hdpi 或其他包)中重新定义,并且将字符串值复制到所有包中实际上停止了异常。
不过,根据 Android 文档,如果没有找到具体的值,则默认采用默认包的值,所以我们不明白为什么会出现此错误。
我们认为可能是自定义 rom 无法“正常”运行,所以我想知道其他人是否有同样的问题或有人有其他建议。
【问题讨论】:
-
是的,同样的事情。我们的应用在大约两打物理设备上的所有测试中运行良好,但我们偶尔会从 Play 商店获得 R$NFE,用于我们的主屏幕布局 xml。
-
哇,感谢您的评论,我以为我是唯一遇到此类问题的人。到目前为止,我发现的唯一“解决方案”是复制每个字符串资源目录中的所有字符串定义。您还有其他“修复”吗?
-
目前还没有。更糟糕的是:缺少布局 XML 可能是由资源加载系统中的边缘情况引起的,但我们的 Application 类也有少数 ClassNotFoundException 情况。我无法解释这一点。
-
我遇到了类似的问题,它最终成为我必须更改的资源 (id) 的名称。几乎就像我对 id 使用保留字或其他东西一样。
-
我知道这是一个老问题,但这里有更多的支持评论。您并不孤单,我正在从 Google Play 获得随机报告,其中在 Application onCreate() 期间调用此行
text_color_gray_text = context.getResources().getColor(R.color.comment_text);(非常简单,呃!)具有相同的 resourceNotFoundException。当然它只发生在一些奇怪的坏自定义 ROM 或坏设备中,但我想知道这个错误是否与在 Application 上下文而不是 Activity 上下文中调用这些资源有关。