java - Android 中的资源标识符值是如何确定的?

标签 java android resources

我想知道 Android 资源识别系统是如何工作的。

因此,我有(例如)一个名称为“example”的 XML 布局文件。 在我的 java 代码中,这是通过调用 R.layout.example 来识别的 返回一个整数。

我想知道的是这个整数是如何确定的,然后又是如何确定的 一个整数值用于标识和查找相应的资源。

谢谢!

最佳答案

整数存储在项目的 gen 文件夹中名为 R.java 的生成文件中。我最近正在进行的工作中的一个示例是:

public final class R {
public static final class attr {
}
public static final class drawable {
    public static final int cot_logo=0x7f020000;
    public static final int cot_logo_small=0x7f020001;
    public static final int ic_launcher=0x7f020002;
    public static final int icon=0x7f020003;
}
public static final class id {
    public static final int password=0x7f060001;
    public static final int username=0x7f060000;
}
public static final class layout {
    public static final int login_dlg=0x7f030000;
    public static final int main=0x7f030001;
}
public static final class string {
    public static final int app_name=0x7f050000;
}
public static final class xml {
    public static final int config=0x7f040000;
}

如您所见,它们的生成方式有一个模式。每种资源类别都有自己的工作区域。

另一件需要注意的事情是,它们是按照它们在 XML/文件夹/等中遇到的顺序生成的。因此,例如,如果您在 XML 中移动一些 View ,您将需要清理您的项目以重新生成完整的 R.java 文件。否则,整数映射将不正确,并且您最终(很可能)会遇到 ClassCastException,或者至少是意外行为。

关于java - Android 中的资源标识符值是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792544/

相关文章:

android - 如何使用闹钟管理器设置 android 通知的标题?

android - 如何让按钮按下一次然后不再按下?

android - 如何将 View 与 TextView 中的文本垂直对齐?

java - 导出后,java无法找到/绘制图像

android - 位图资源取决于屏幕密度

Java - 如何测试一些代码?

java - 如何在 Spring Boot 中根据局部变量的值读取外部属性?

java - JSP beans - 每次加载页面时都读取数据库吗?

java - Liferay 中的 Oracle 自定义 sql

不相交条件下的资源分配算法