R.java文件实际上做了什么以及如何做

时间:2013-04-13 22:20:53

标签: android

我一直在研究一个简单的android教程,在浏览项目文件夹时,我在R.java文件夹中找到了这个gen文件......

当我打开它时,我觉得它很乱......

  • 第一个R本身就是class
  • multiple Inner classesdrawableid等内定义了layout
  • 并且内部类有很多变量声明如下,并使用十六进制值

    进行分配

    public static final int addr = 0x7f080003; ... ... 还有更多

R是自动生成的,并充当其他文件的指针

R.java的问题

  • 基本上是什么
  • 如何运作
  • 为什么
  • 值以十六进制显示
  • 在实际应用程序运行时它执行了什么角色

3 个答案:

答案 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);

它会在Viewlayout等处查找您的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做了很棒的工作。非常宝贵的。