0

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

公共静态最终类字符串{

    public static final int gcm_unregistered = 0;

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

4

3 回答 3

4

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

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

于 2012-10-30T18:21:48.677 回答
3

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

如果你想添加自己的常量,只需让自己成为一个Constants类(我通常称之为 mine 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文件并覆盖旧文件。此文件将包含指向所有IDsStrings、等的指针Layouts,切勿手动修改。如果您想要 中的值,则应检查是否可以合法地将其添加到其中一个文件夹中,如果可以,请这样做。但是,AFAIK,您不能为其添加值(请注意,虽然其中的所有内容都是,但它们指向各种其他资源。因此,虽然将是一个值,但它实际上告诉 Android 使用该文件。ColorsR.javaR.java/resintR.javaintR.layout.mylayoutintmylayout.xml

这里有一篇关于 R.java 和 /res 文件夹不同部分的优秀文章

于 2012-10-30T18:22:46.147 回答
1

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

于 2012-10-30T18:22:47.480 回答