在进行Android开发的过程中经常遇见R文件报错,许多初学者经常会非常头疼这个R文件到底是什么
首先,我们来了解一下R文件:
当 Android 应用程序被编译,会自动生成一个 R 类,其中包含了所有 res/ 目录下资源的 ID,如布局文件,资源文件,图片(values下所有文件)的ID等。在写java代码需要用这些资源的时候,你可以使用 R 类,通过子类+资源名或者直接使用资源 ID 来访问资源。
R.java文件是活动的Java文件,如MainActivity.java的和资源如strings.xml之间的胶水。我们不要去修改R.java文件的内容。
如上是一个自动生成的R文件示意。
那么,我们将如何通过R文件来实现资源调用呢?使用情况有两种:Java代码中使用和XML代码中使用。
1.java代码中使用:
Java 文字:
txtName.setText(getResources().getText(R.string.name));
图片:
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
颜色:
txtName.setTextColor(getResouces().getColor(R.color.red));
布局:
setContentView(R.layout.main);
控件:
txtName = (TextView)findViewById(R.id.txt_name);
2.XML代码中使用:
通过@xxx即可得到,比如这里获取文本和图片:
<TextViewandroid:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_back"/>
但是有时候,R文件并不能像预想的那样生成出来或者可以正确使用,这里总结了几个R文件相关的错误已经解决方案:
(1)xml本身有错误,解决方案:把console中的信息clear一下,然后再clear项目一下,这个时候,console中会有很多红色的信息,参照这个肯定能准确的找到哪个文件报错了
(2)编码格式不正确,解决方案:修改编码格式为UTF-8就好
(3)莫名的配置问题,常规解决方案:1.选择菜单Project >> Clean,前提是勾选上Bulid Automatically(自动构建部署),点Clean后会重新构建项目,因为一般情况下,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不会自动生成; 2.选择工程,右键Android Tools >> Fix Project Properties这个操作有时候可以修正一些错误 3.重新建一个空的工程,然后把这里面的代码,资源文件按照对应的包路径什么的拷进去,重新生成一遍,或者从一个完好的项目里面拷贝复制一个R文件过来,随便修改一下XML文件
(4)默认的SDK版本问题,解决方案:修改SDK版本至合适版本,重新构建项目
(5)AndroidStudio包自动导入时误操作屏蔽了R文件,解决方案:打开androidStudio设置界面File->Settings->Editor->General->Auto Import打开自动引用设置界面,删除被屏蔽的R文件
(6)当以上方法均没有作用的时候,也可以尝试删除gen目录,重新编译,IDE会自动生成gen目录已经R文件