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

2024-01-08

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

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

  • first R本身就是一个class.
  • it had multiple Inner classes定义在例如drawable,id,layout,etc.
  • 并且内部类有很多声明如下的变量,这些变量被分配了十六进制值

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

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

关于 R.java 的问题

  • 它的基本用途是什么
  • 怎么运行的
  • why
  • 值是十六进制的
  • 在实际应用程序运行时它扮演什么角色

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

它包含什么?

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

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

setContentView(R.layout.main);

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

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

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

如果您想了解有关此主题的更多信息,您应该查看 Android 文档,尤其是访问资源 http://developer.android.com/guide/topics/resources/accessing-resources.html part.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R.java 文件实际上做什么以及如何做 的相关文章

随机推荐

  • 如何获取 Android 11 中已安装应用的列表

    开发者网站上描述了这一行 但我没有完全理解它 Call getInstalledApplications or getInstalledPackages Both methods should return a filtered list
  • Python 压缩子文件夹而不是整个文件夹路径

    我有一个程序可以将所有内容压缩到一个文件夹中 我没有编写这段代码 但我在网上找到了它并且我正在使用它 我打算压缩一个文件夹 例如 C folder1 folder2 folder3 我想将folder3 及其所有内容压缩到一个文件中 例如f
  • 如何列出从单个卷 ID EC2 实例创建的所有快照?

    在过去的几个月中 我们的快照备份量增加 因此我们每月在亚马逊 EC2 上的账单也随之增加 现在我想删除一些旧的 EC2 快照 所以问题是 如何使用 EC2 命令行工具查找从单个卷 ID 创建的所有快照 I tried ec2 describ
  • 访问另一个类的 Swing 组件

    我有两节课gameWindow and gameEngine 主要方法是在gameWindowclass so 是 swing GUI 代码 现在 我想访问中的 swing 组件gameEngine 怎么做 我总是得到cannot find
  • std::bit_cast 和 std::start_lifetime_as 之间有什么有用的区别吗?

    std bit cast显然是在 c 20 中引入的 和std start lifetime as被提议用于 c 23 来自P0593R5 https wg21 link p0593R5 由于它们似乎都要求所涉及的数据类型无论如何都是微不足
  • 如何在Flutter中复用非Widget类?

    我知道我们应该使用组合优于继承 https stackoverflow com a 51477727 1769177在颤振中 当我们谈论时这很有效Widgets 但是当一个类不是一个类时我该怎么办Widget 例如 我想要我的TextFie
  • 如何在代码隐藏中将 FrameworkElement.Width 属性设置为 QualifiedDouble 的值?

    我试图将我的一个控件的宽度属性设置为qualifiedDouble 如 MSDN 上所述 http msdn microsoft com en us library system windows frameworkelement width
  • Keras Embedding 层中的 mask_zero 如何工作?

    我想mask zero True当输入值为 0 时将输出 0 因此后续层可以跳过计算或其他操作 如何mask zero works 例子 data in np array 1 2 0 0 data in shape gt gt gt 1 4
  • 根据语言更改文本

    我正在使用带有语言切换器的 Wordpress 在各种语言之间进行切换 在模板中 我使用这段代码来切换硬编码文本 This is english This is another language 我有一个侧边栏 但它是通过各种小部件创建的
  • 使用 io.TextIOWrapper 包装打开的流

    如何包装一个开放的二进制流 Python 2file Python 3io BufferedReader an io BytesIO 在一个io TextIOWrapper 我正在尝试编写不改变即可工作的代码 在 Python 2 上运行
  • Xcode 6 和 Swift 中视图之间类似 Snapchat 的滑动导航)

    我一直在尝试使用滑动手势识别器和嵌入式导航控制器在我的应用程序中的视图控制器之间实现滑动导航 但它看起来与 Snapchat 的导航并不接近 实现搜索功能最有效 最合适的方法是什么 我确实是 Swift 和编程的新手 我会很感激每一个有用的
  • 找不到模块错误:没有名为“chart_studio”的模块

    I run pip install chart studio在 jupyter 笔记本中 然后运行这段代码时 import numpy as np import pandas as pd import cufflinks as cf imp
  • 如何用JQ补数字?

    我想向数字中的字符串添加前导 尾随零 结果字符串需要包含 01 或 001 而不是 1 我注意到项目https github com joelpurra jq zeros但我从包管理器 dnf fedora 安装了 jq 所以需要一些jqn
  • 绑定复选框列表

    我需要一种简单的方法来绑定复选框列表asp net C 我从数据库 Id Name 和 IsActive 中提取 3 列 Id 和 Name 我想通过它的名字就可以清楚地看出 IsActive 将用于显示选中和未选中的框 我只是想知道 数据
  • 在 Angular 2 中从子组件更新父组件属性

    我在用着 input从父组件接收属性 以便激活子组件元素之一中的 CSS 类 我能够从父母那里接收财产并激活班级 但这只有效一次 我从父级接收的属性是一个布尔数据类型 当我将其状态设置为false从子组件开始 它在父组件中不会改变 Plun
  • webpack 4 给出背景: url([object Module]) 作为背景图像

    我在设置 web pack 4 和 svg sprite loader 将 svg 图标渲染为背景图像时遇到问题 我遵循 svg sprite loader 官方文档中的这些说明 https github com kisenka svg s
  • 使用 OpenCV 和 PyAudio 同步音频和视频

    我已经让 OpenCV 和 PyAudio 都工作了 但是我不确定如何将它们同步在一起 我无法从 OpenCV 获取帧速率并测量帧时时刻刻变化的调用时间 然而 对于 PyAudio 来说 它的基础是获取一定的采样率 我如何将它们同步到相同的
  • SqlAlchemy 连接字符串[重复]

    这个问题在这里已经有答案了 我遇到了非常奇怪的问题 我使用 sqlalchemy 的解决方案无法连接到数据库 这取决于我使用的密码 例如 以下记录工作正常 PWD 123123123 USR test user SQLALCHEMY DAT
  • 修复 OCaml 中的数据类型

    Haskell 中的以下数据类型如何用 OCaml 或 SML 表示 newtype Fix f In f Fix f 我已经在邮件列表上回答了这个问题 https sympa inria fr sympa arc caml list 20
  • R.java 文件实际上做什么以及如何做

    我一直在研究一个简单的 android 教程 在浏览项目文件夹时我发现了这个R java文件输入gen文件夹 当我打开时 我觉得它很乱 first R本身就是一个class it had multiple Inner classes定义在例