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

kar*_*ran 9 android

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

当我打开它时,我觉得一团糟......

  • 首先R是一个class.
  • multiple Inner classes内如定义drawable,id,layout等.
  • 并且内部类有很多变量声明如下,并用十六进制值分配

    public static final int addr = 0x7f080003; ... ... 以及更多

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

R.java的问题

  • 什么是基本的
  • 这个怎么运作
  • 为什么
  • 值以十六进制表示
  • 在实际应用程序运行时它执行了什么角色

Mal*_*olm 4

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

它包含什么?

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

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

setContentView(R.layout.main);
Run Code Online (Sandbox Code Playgroud)

mainR 文件中包含被 Android 资源管理系统理解为布局文件的编号,称为 main.h 。

为什么它比纯文件名更好?

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

如果您想了解有关此主题的更多信息,您应该查看 Android 文档,尤其是访问资源部分。