【问题标题】:Eclipse R.java changes not savedEclipse R.java 更改未保存
【发布时间】:2012-10-30 18:18:48
【问题描述】:

当我“快速修复”类似“gcm_unregistered 无法解析或不是字段”之类的错误并单击“在字符串类型中创建常量 gcm_unregistered”时,R.java 中有一个添加 ->

公共静态最终类字符串{

    public static final int gcm_unregistered = 0;

保存后,项目重建并创建一个新的标准 R.java 没有添加的行。 我在 R.java 中看到了更多行的示例,所以我的项目中出现了问题或者我错过了一个设置?

【问题讨论】:

  • 这应该可以工作,直到您的构建过程以某种方式覆盖R.java
  • 我是这么认为的。找不到不覆盖的设置...是吗?
  • Harry:我不知道R.java 是一个系统文件(我认为它是一个通用的java 文件并给出了建议)。 PS:我几乎不知道android development 我的评论完全基于我对Java 的了解。谢谢。

标签: java android eclipse r.java-file


【解决方案1】:

我不确定 gcm_unregistered 应该是什么,但我建议不要编辑 R 类,因为它是生成的。如果您想在 Resources (R) 中添加一些内容,请通过 xml 进行。这是用于操作/访问资源的 Android 站点http://developer.android.com/guide/topics/resources/accessing-resources.html

编辑:所以您想添加一个字符串资源,然后转到 res/values/ 下的 strings.xml 并使用您想要的值添加 gcm_unregistered。

【讨论】:

  • 谢谢,这就行了!在 stings.xml 中添加字符串时出现在 R.java...
  • @Harry 当您尝试在您的应用程序中获取它时,您首先必须将其作为字符串获取,然后将其解析为整数。这只是一点额外的处理,但这是可以避免的。
【解决方案2】:

R.java 是一个由 Android Build 进程自动生成的文件。再次构建项目时,您对其所做的任何更改都将丢失。

如果你想添加自己的常量,只需让自己成为一个Constants 类(我通常叫我的C,以保持简短)

public class Constants {

    public static final int gcm_unregistered = 0;

}

现在您可以使用Constants.gcm_unregistered 访问它。

对R.java的更深解释

Android 将基于 XML 的布局视为资源,因此会存储此类布局文件 在你的 Android 项目中的 res/layout 目录中。字符串、颜色、原始二进制数据(如声音文件等)也被视为资源。从本质上讲,任何/res 文件夹中合法允许的任何内容都是一种资源。

当您运行 Android 构建系统时,aapt 工具会生成一个新的 R.java 文件并覆盖旧文件。该文件将包含指向您的所有IDsStringsLayoutsColors 等的指针。永远不要手动修改R.java。如果您想要 R.java 中的值,您应该检查是否可以合法地将其添加到 /res 文件夹之一,如果可以,请这样做。但是,AFAIK,您不能向其中添加 int 值(请注意,虽然 R.java 中的所有内容都是 int,但它们指向各种其他资源。因此,虽然 R.layout.mylayout 将是 int 值,它实际上告诉 Android 使用 mylayout.xml 文件。

在 R.java 和 here 上的 /res 文件夹的不同部分有一篇出色的文章。

【讨论】:

  • 我比我更喜欢你的回答
  • 常量类的好处是你可以在里面放其他东西。如果您将文件名和键值存储为常量,它将消除在 sharedprefs 等中出现拼写错误的机会。这个答案只是一个例子。谢谢你:)
【解决方案3】:

R.java 被构建修改,你不应该修改它,因为你的更改将会丢失。

【讨论】:

  • 为什么“快速修复”会给出这个解决方案?
  • 快速修复是建议。程序员不应仅仅依赖 IDE 的建议。
  • 快速修复是一个Eclipse特性,它不知道Android项目中的R.java会被android build修改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多