【android相关】【问题解决】R.java文件丢失

简介:

在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象。重新build,或者clean工程,close并重新打开Project,但有时也没解决。

  这可能是由于不小心把xml文件写错了,或者在编辑xml或者其他文件时候点击了run,或者clear过项目等...,反正,你会发现gen下面的R.java的文件找不到了。

  其实,只要xml文件有问题,系统就不会给自动生成R.java文件,因为系统需要参照每个xml里的数据来生成R.java。

  当然,如果项目较大,而layou下xml文件有较多的情况下一个一个看也比较麻烦,这时候,尝试选择刷新项目,并eclipse-->Project-->clean,这个时候,Project中可能就会出现红色的错误信息,根据这个去逐个解决之后,一般就可以了。

  然后,对着工程点击鼠标右键 选择 Build Project,R.java 文件又回来。这样R.xx.xxx 就能 X 的出来了; 如果还没出来,那么可以尝试从别的工程中拷贝一份R文件过来 然后string.xml里随便改动一下 即可更新R文件; 不过要注意,多检查工程,像文件的命名之类,比如我就曾犯过错误,把layout下的文件命名为haoBooks_Content.xml,结果一直不对,需要全部小写就可以了。

  这里记得这个原则:资源的命名规则是不允许有大写字母出现的。另外也不允许下划线_出现。

  那么,我们来看看这个文件到底是做什么的。

  R.java这个文件是会自动生成的,它记录了一些系统的资源信息,不需要我们自己手动去编辑。  

复制代码
package com.example.haoactivity02;

public final class R {
    public static final class attr {
    }
    public static final class dimen {
        /**  Default screen margins, per the Android Design guidelines. 

         Customize dimensions originally defined in res/values/dimens.xml (such as
         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
    
         */
        public static final int activity_horizontal_margin=0x7f040000;
        public static final int activity_vertical_margin=0x7f040001;
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int action_settings=0x7f080006;
        public static final int haobook_content_TextView01=0x7f080005;
        public static final int haobooks_Text01=0x7f080000;
        public static final int haobooks_Text02=0x7f080003;
        public static final int haobooks_button01=0x7f080001;
        public static final int haobooks_button02=0x7f080002;
        public static final int haobooks_button03=0x7f080004;
    }
    public static final class layout {
        public static final int activity_hao_books=0x7f030000;
        public static final int haobooks_content=0x7f030001;
    }
    public static final class menu {
        public static final int hao_books=0x7f070000;
    }
    public static final class string {
        public static final int action_settings=0x7f050001;
        public static final int app_name=0x7f050000;
        public static final int haobook_002=0x7f050003;
        public static final int haobook_content_TextView01=0x7f050002;
        public static final int haobooks_Text01=0x7f050004;
        public static final int haobooks_Text02=0x7f050007;
        public static final int haobooks_button01=0x7f050005;
        public static final int haobooks_button02=0x7f050006;
        public static final int haobooks_button03=0x7f050008;
    }
    public static final class style {
        public static final int AppBaseTheme=0x7f060000;
        /**  Application theme. 
 All customizations that are NOT specific to a particular API-level can go here. 
         */
        public static final int AppTheme=0x7f060001;
    }
}
复制代码

  R.java文件中默认有attr、dimen、drawable、id、layout、menu、string、style等静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应layout中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符,比如public static final int activity_hao_books=0x7f030000;对应的是layout目录下的activity_hao_books.xml文件。
 attr 是控件的属性,一般在res/attr.xml中定义,控件可以使用这里面的资源。目前未定义,所以为空;

  dimen 是屏幕属性,记录屏幕水平还是垂直对齐的一些属性;   
    drawable其实对应了res下的图片文件:ic_launcher.png,不同详述的同名的ic_launcher.png文件在drawable内部类总只有一个icon属性。如果我们在【drawable-*dpi】目录下再添加一幅图片,则内部类中会自动的添加一个icon属性。

    id 是需要找的控件的标示符号,我们常会写findViewById(××××),也就是在找这个ID;
    layout 里面一般是main.xml,是布局相关文件;

    添加资源的命名规则:资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现 [a-z0-9_.] 这些字符,否则R.java文件不会自动更新,并且eclipse会提示错误。
    理解了R.java文件中内容的来源,即当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的匿名内部类中国自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的静态int常量。相反当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。
     R.java文件按除了有自动标示资源的索引功能之外,还有另外一个主要的功能,如果res目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。



本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/3416158.html,如需转载请自行联系原作者

相关文章
|
3天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
16 1
|
23天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
1月前
|
Java
java中替换文件内容
java中替换文件内容
14 1
|
1月前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【2月更文挑战第30天】 随着Kotlin成为开发Android应用的首选语言,开发者社区对于其性能表现持续关注。本文通过深入分析与基准测试,探讨Kotlin与Java在Android平台上的性能差异,揭示两种语言在编译效率、运行时性能和内存消耗方面的具体表现,并提供优化建议。我们的目标是为Android开发者提供科学依据,帮助他们在项目实践中做出明智的编程语言选择。
|
1月前
|
Java API
Java中文件与输入输出
Java中文件与输入输出
|
1月前
|
Java
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
10 0
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
30天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
18 4
|
3天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
35 1