1

昨晚我的代码工作正常,今天当我加载它时,我在代码中访问的原始资源正试图从指向字符串的 id 读取,而不是原始文件夹中的 xml 文件。

我已经使用http://www.statman.info/conversions/hexadecimal.html来跟踪资源 id 并将它们与它们的 R hex id 匹配,我可以看到它应该访问 0x7f040002 但由于某种原因正在访问 7f060000 .. .

我已经看过了: Accessing wrong raw resource in Android

我已经完成了以下所有操作:

  1. 清洁、重建、运行。
  2. 删除 R,重启 Eclipse,清理,重建,运行
  3. 删除 R,立即清理并重建,重新启动
  4. UmbySlipKnot 删除 Gen Folder + 以上所有内容的想法。
  5. 确保 Android.R 没有在任何地方使用。
  6. 通过调用打印了我期望使用的实际资源 id(正确返回预期的 id!):

int resId=con.getResources().getIdentifier("raw_tsn_xml_amina_simple","raw",con.getPackageName());

还完全从头开始重建项目。无论我做什么 - 它总是将应用程序名称作为它为输入流引用的资源 id - 源

这些都不适合我......有没有人知道我还能尝试什么?

我还添加了图像来向您展示我注意到的内容:

调试片段: 在此处输入图像描述

Android R 文件片段: 在此处输入图像描述

4

3 回答 3

2

前几天我遇到了这个问题,使用了错误的图像资源 ID。唯一对我有用的是重命名资源并重命名对所述资源的引用。因此,尝试将 raw_tsn_xml_amina_simple.xml 重命名为其他名称。

于 2013-06-10T15:30:15.947 回答
1

显然 Eclipse 调试器并不像我预期的那样可靠。

当我使用调试器时,我注意到资源 ID 被正确找到,但是当我真正挑剔到调试器时,inputStream 似乎是从另一个源构建的。

我认为这就是我的代码崩溃的原因,但事实并非如此。

我使用了一个简单的 xml android 库 - 如果您传递的 xml 格式为意外/无效格式,则它无法构建您创建的数据模型(我的 XML 无效 - 因此崩溃)。

我回滚了一下,发现我添加的新 XML 导致运行崩溃。

调试器刚刚启动......当事情不为空时给我空值,即使我的日志打印正确的值也显示不同的值!

一旦我看到这种情况,我就不像往常那样信任调试器了。

我的建议:如果此页面上的更简单的解决方案对您不起作用 - 请执行以下步骤:

  1. 首先怀疑代码添加!如果你添加的东西突然破坏了你的工作代码,那可能是你自己的错误

  2. 如果您的调试器行为怪异,请打印有用的日志信息(速度更快),以便在正确的位置为您提供正确的信息。

这些是我找到问题根源的确切步骤。

于 2013-06-11T18:23:01.987 回答
1

尝试删除 Gen 文件夹并让它重新生成。然后再试一次。

于 2013-06-04T15:11:31.890 回答