【问题标题】:Random android.content.res.Resources$NotFoundException随机 android.content.res.Resources$NotFoundException
【发布时间】: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 上下文中调用这些资源有关。

标签: android android-resources


【解决方案1】:

有很多具有不同配置的 Android 设备。因此,当我们不保留特定于相应匹配设备配置的资源 [drawable-hdpi,values-en,layout-land 等] 时,android 系统会查看该资源的默认配置 [drawable,values & layout]。

因此建议在各自的位置保留默认和配置特定资源。

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多