当我“快速修复”诸如“gcm_unregistered无法解析或不是字段”之类的错误并单击“在字符串类型中创建常量gcm_unregistered”时,在R.java中添加了一个 - >
public static final class string {
public static final int gcm_unregistered = 0;
保存项目后重建并创建一个没有添加行的新标准R. java。 我在R.java中看到了更多行的例子,所以我项目中的某些内容出错或者我错过了设置?
答案 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
文件并覆盖旧文件。此文件将包含指向所有IDs
,Strings
,Layouts
,Colors
等的指针。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被构建修改,你不应该修改它,因为你的更改将会丢失。