Eclipse R.java更改未保存

时间:2012-10-30 18:18:49

标签: java android eclipse r.java-file

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

public static final class string {

    public static final int gcm_unregistered = 0;

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

3 个答案:

答案 0 :(得分:4)

我不确定gcm_unregistered应该是什么,但我建议不要编辑R类,因为它生成了。如果你想在Resources(R)中添加一些东西,可以通过xml来实现。用于操纵/访问资源的Android网站http://developer.android.com/guide/topics/resources/accessing-resources.html

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

答案 1 :(得分:3)

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和/ res文件夹的不同部分在here上有一个很好的写法。

答案 2 :(得分:1)

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