我一直在研究一个简单的android教程,在浏览项目文件夹时,我在R.java
文件夹中找到了这个gen
文件......
当我打开它时,我觉得它很乱......
R
本身就是class
。multiple Inner classes
,drawable
,id
等内定义了layout
并且内部类有很多变量声明如下,并使用十六进制值
进行分配public static final int addr = 0x7f080003; ... ... 还有更多
R是自动生成的,并充当其他文件的指针
R.java的问题
答案 0 :(得分:3)
“作为一些指向其他文件的指针”实际上是绝对正确的,现在的问题是它指向它是如何完成的文件。
R文件包含项目res
文件夹中所有资源的ID,以及您自己定义的一些其他ID(例如,在布局中)。 Android资源管理系统需要ID才能从APK检索文件。每个ID基本上都是一个与资源管理系统中的某个资源相对应的数字。
需要文件本身,以便您可以通过将资源的ID提供给资源管理器来从代码访问或引用资源。比如,如果要在活动中设置视图,请调用
setContentView(R.layout.main);
R文件中的 main
包含Android资源管理系统将其理解为布局文件的数字,该文件称为main。
生成的字段出错很难。如果您错误地编写了字段名称,您的程序将无法编译,您将立即知道存在错误。但是,如果编写的字符串不正确,则应用程序在启动之前不会失败。
如果您想了解有关此主题的更多信息,请查看Android文档,尤其是Accessing Resources部分。
答案 1 :(得分:1)
这可以保存您的资源ID。所以当你做类似的事情时
TextView tv = (TextView) findViewById(R.id.mytextview);
它会在View
,layout
等处查找您的ID ...这样,应用程序可以轻松查找您的ID,同时您可以使用易记的名称。无论何时创建resource
,它都会自动为其创建id
并将其存储在此处。这就是为什么你永远不想尝试自己编辑这个文件。
答案 2 :(得分:1)
想想R.java有多么有价值的一种方式,想象一个没有它的世界。令人惊讶的是android如何将xml和java世界结合在一起,以帮助避免完全手动编写UI。使用java语言的遗留Java构建UI是一个痛苦。非常宝贵的。
使用Android,您不仅可以仅使用xml构建UI,还可以在构建时查看它。非常宝贵的。
xml中的每个元素都可以在java代码中引用,而无需编写单行代码来解析xml :)。只是R.id.nameOfElement。非常宝贵的。
快速开发在android中做得非常好。想象一下,如果iPhone有5000个屏幕来适应这一段代码,他们就会崩溃他们的XCode。谷歌只用R.java做了很棒的工作。非常宝贵的。