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="[email protected]/action_settings"        android:orderInCategory="100"        android:showAsAction="never"        android:title="HEHE"/>

android:id="[email protected]/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,但是没有配置好。



更多相关文章

  1. Android(安卓)Studio导入SlidingMenu类库的方法(其他类库应该也适
  2. AndroidManifest.xml文件剖析
  3. Android开发之“hello World”的实现
  4. Android手机添加根证书
  5. Android中的文件存储数据方式
  6. [Android][Android(安卓)Studio] *.jar 与 *.aar 的生成与*.aar
  7. Android面试题笔记(一)
  8. Android(安卓)proguard混淆编译的问题
  9. Android反编译工具介绍

随机推荐

  1. Android(安卓)linux的休眠和唤醒
  2. Android(安卓)通过Base64上传图片到服务
  3. Android进阶之Mp3项目(五)
  4. adb and App
  5. 安卓加载模式(Android(安卓)LauncherMode)
  6. Android中跨包访问Preferences
  7. Android(安卓)Drawable介绍
  8. [Android]通过JNI访问并操作Bitmap的元素
  9. Android对话框实现
  10. (20120731)android面试总结(003)