9

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

打开的时候,我觉得是一团糟……

  • 首先R本身是一个class.
  • 它已multiple Inner classes在例如drawable, id,layout等中定义。
  • 并且内部类有许多声明如下的变量,这些变量分配了十六进制值

    公共静态最终 int addr=0x7f080003; ... ... 以及更多

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

R.java 的问题

  • 它基本上是为了什么
  • 这个怎么运作
  • 为什么
  • 值是十六进制
  • 它在实际应用程序运行时扮演什么角色
4

3 回答 3

4

“充当指向其他文件的指针”实际上是绝对正确的,现在的问题是它指向哪些文件它是如何完成的。

它包含什么?

R 文件包含res项目文件夹中所有资源的 ID,以及您自己定义的一些附加 ID(例如在布局中)。Android 资源管理系统需要这些 ID 从 APK 中检索文件。每个 ID 基本上是一个数字,对应于资源管理系统中的某个资源。

该文件本身是必需的,因此您可以通过将资源的 ID 提供给资源管理器来从代码中访问或引用资源。说,如果你想在活动中设置视图,你打电话

setContentView(R.layout.main);

mainR文件中包含的数字被Android资源管理系统理解为布局文件,称为main。

为什么它比简单的文件名更好?

生成的字段更难出错。如果你写错了字段名,你的程序将无法编译,你会立即知道有错误。但是,如果您编写的字符串不正确,则应用程序在启动之前不会失败。

如果你想阅读更多关于这个主题的内容,你应该查看 Android 文档,尤其是访问资源部分。

于 2013-04-13T22:33:07.057 回答
1

这包含您的资源ID。所以当你做类似的事情时

TextView tv = (TextView) findViewById(R.id.mytextview);

它会在此处查找您的 id Viewlayout等等...这样,该应用程序可以轻松查找您的 id,同时您可以使用容易记住的名称。任何时候你创建一个resource它都会自动id为它创建一个并将它存储在这里。这就是为什么您永远不想自己尝试编辑此文件的原因。

于 2013-04-13T22:25:10.837 回答
1

一种思考 R.java 价值的方法,想象一个没有它的世界。令人惊奇的是,android 将 xml 和 java 世界结合在一起,以帮助避免完全手动编写 UI。使用 Java 语言构建遗留的 Java 用户界面是一件痛苦的事情。无价。

使用 Android,您不仅可以仅使用 xml 构建 UI,还可以在构建时查看它。无价。

xml 中的每个元素都可以在 java 代码中引用,而无需编写一行代码来解析 xml:)。只是 R.id.nameOfElement。无价。

快速开发在 android 中完美完成。想象一下,如果 iPhone 有 5000 个屏幕来容纳一段代码,他们会在 XCode 上崩溃。Google 仅使用 R.java 就完成了出色的工作。无价。

于 2013-04-22T11:11:59.503 回答