android r cannot be resolved to a variable 错误以及 所有的文件没有报错但是项目报错

      r cannot be resolved to a variable,这个错误几乎每个安卓开发者都会遇到,网上的答案一般都是:

    1. 检查Android 的SDK是否丢失需要重新下载,检查build path
    2.确保class没有import Android.R;
    3,错误class引用的layout的xml文件没有错误
    4.检查AndroidManifest.xml文件,里边的package,layout配置文件,strings.xml等的字符串全部书写正确
    5.layout的xml文件中引用的strings.xml中的字符串拼写完全正确
    6.在layout 的xml文件手写添加一个控件,看id能否在R.java中自动生成,如果不能,那很大可能就是这个layout的xml文件有问题,  查看格式是否使用正确,或者包含什么非法字符串,或者调用到了不正确的字符串,等等,可以使用排除法,挨个去掉控件,直到发现errormessage消失或者id能在R.java中自动生成。
    7.删掉gen文件夹,使R.java重新自动生成一次,如果不能生成,继续检查layout的xml文件是否有如上不易发觉的问题
    8.Clean project ,重新build,或者重新import project。
    9.重启eclipse
    10.重启电脑,以防Android 虚拟机的问题

  这里,我具体来分析一下这个问题的原因。

  首先,我们知道,Eclipse是自带语法检测功能的,因此,

(1)如果项目中的 Java 代码出错,导致了 r cannot be resolved to a variable,eclipse肯定会报错并指出出错位置的,如果没有任何报错,就可以排除 Java 的嫌疑 ;

(2)嫌疑最大的就是各个 XML 文件。根据我自己的经验以及网上的资料,出现 r cannot be resolved to a variable错误,90%的原因都是 XML 错误。比如,我故意将一段正确的代码搞错:

<item
        android:id="+@id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="HEHE"/>

android:id="+@id/action_settings"
改成

android:id="@id/action_settings"
xml文件本身不会报错,但是整个项目上报错了,出现了红叉叉。

    因此,可能的原因有:XML语法错误;大小写错误,比如src文件夹下面的包是com.example.test , 但是R.java所在的包是com.example.Test;拼写错误,比如把android写成 andorid之类的;引用的某个资源并不存在(引用了未定义的string资源等);等等。

    一个较好的解决方法:右键点击项目->run as android application ,观察 console 控制台的错误提示:

     可以推测,我引用了一个未定义的资源。

(3)项目的配置问题

     这个就跟具体的项目背景,项目配置有关了,因人而异。比如使用了NDK,但是没有配置好。


    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值