【问题标题】:Deleting completely unused XML file, R.java not auto-generating after clean删除完全未使用的 XML 文件,清理后 R.java 不会自动生成
【发布时间】:2013-09-17 22:34:22
【问题描述】:

我刚刚从我的项目中删除了一个 XML 文件,该文件在几周内没有使用,并且在我自己编写的任何文件中都没有被引用一次。删除后,我有 79 个错误,声称指向 R.java 文件的所有内容“无法解析或不是字段”。我已经重新启动了 Eclipse,我的电脑,清理和重建了几次。我似乎无法找到将文件添加回来的方法。我该如何解决这个问题?

编辑:R.java 目前在我的项目中根本不存在。

编辑 2:这是我的控制台输出: C:\Users\Matt\workspace\BarJinx\res\menu\login_picker.xml:3: 错误:错误:找不到与给定名称匹配的资源(在 'title' 处,值为 '@string/action_forgot_password')。

这是我的 login_picker.xml 代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_forgot_password"
    android:showAsAction="never"
    android:title="@string/action_forgot_password"/>

</menu>

【问题讨论】:

  • 也许寻找 import android.R;在你的类中删除它并重建
  • 你确定它没有被使用吗?当项目中某处出现 xml 错误时,通常会丢失 R 文件。你删除的那个文件是什么?
  • 是的,我确定它没有被使用。它是 login_picker.xml,我实际上从未有过登录活动。我应该删除所有 R 导入、清理和构建,然后将其添加回来吗?
  • 是的,在你的类中查找 import android.R;并从你的类中删除它保存它们,然后我应该生成一个 R.java,当我进行大量复制和粘贴时,eclipse 有时会自动将它扔在那里,但这只是一种可能性
  • 试过了,目前什么都没做。

标签: java android xml eclipse r.java-file


【解决方案1】:

你可以尝试一些事情。-

  • 我猜你没有连接到 svn 存储库,但你仍然可以尝试右键单击 Project =&gt; Restore From local history...,以确保你删除的文件导致了问题(如果你关闭了 eclipse不过这可能行不通)

  • 仔细检查Problems tab;它可能会为您提供有关为什么没有生成 R 的线索(通常与保持项目源编译的某些问题有关)

  • 转到Android properties,更改Android Target Version 并接受。

  • 点击Android Tools =&gt; Fix Project Properties

  • 检查Project =&gt; Java build path 以了解构建路径问题。

希望对你有帮助。

【讨论】:

  • 我确实从本地历史恢复并选择了文件,“问题”选项卡似乎根本没有提供任何帮助。对于每个对 R.id、R.drawable、R.string 或 R.layout 的引用,所有内容都是“无法解析的空白或不是字段”。我也做了第 3 步和第 4 步,从 Android 4.3 更改为 Android 4.2.2。它工作了一秒钟,只给了我 2 个错误,一个说必须修复构建路径中的错误,另一个说未解析的 aapt 错误。但是在清理和重建之后,同样的问题发生了!
  • 嗯,你检查过项目属性的构建路径了吗?
  • 说实话,我对这一切了解不多,但在我删除文件之前它工作得很好。
  • 是的,但有时eclipse会做那些奇怪的事情,很可能你删除的文件实际上与问题无关。
【解决方案2】:

如果您有红色波浪线,您的资源文件将不会自动重新创建自己,语法错误会阻止您的代码编译。通过这个未重新创建的关键文件资源,您会遇到很多错误。这是可以预料的。要解决您的问题,请打开文件 C:\Users\Matt\workspace\BarJinx\res\values\strings.xml 并添加这一行

如果您使用 eclipse 有帮助,您可以从 ide 添加/编辑字符串,点击资源选项卡,祝您好运。

【讨论】:

    【解决方案3】:

    很抱歉,这是您需要的主要部分

    &lt;string name="action_forgot_password"&gt;So you forgot your password&lt;/string&gt;

    或者您也可以在 login_picker.xml 文件中添加一个字符串

    "so you forgot your password"
    

    让我解释一下第一种方式是最好的,因为你不能假设用户会说英语。稍后您将看到为什么字符串被单独存储在一个字符串文件或许多字符串文件中,每个文件对应一种语言。例如,如果应用程序在设置为西班牙语的设备上运行,您首先需要一个文件 strings.es 女巫有这一行

    <string name="action_forgot_password">El So you forgot your password</string>
    

    抱歉,我不会说西班牙语,但我希望你明白为什么他们会使用这种方式来间接引用另一个文件中的字符串。这是安卓的方式。您也不能假设运行您的应用程序的设备将有一个小显示器,因此您最终会制作许多布局,每个屏幕尺寸一个,这就是为什么您有许多可绘制文件的原因。

    【讨论】:

      【解决方案4】:

      所以在做了几次“从每个文件中删除所有 android.R 导入”的事情之后,去睡觉,第二天早上再做一次,它确实有效。有时我讨厌日食。

      【讨论】:

        猜你喜欢
        • 2015-02-26
        • 2011-08-16
        • 2015-02-02
        • 2014-03-13
        • 1970-01-01
        • 2011-05-29
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多