Android 资源 ID

标签 android resources

我正在从自定义 xml View 类型中检索自定义资源 ID。我被要求为检索指定一个默认的 int 值,并且想知道 ID 的范围是多少?它们总是正数还是包含零??

即 -1 是一个有效的“null”引用 AND/OR 是 0 一个有效的“null”引用吗?

谢谢

编辑

自定义 XML 资源/属性文件

<resources>
    <declare-styleable name="ToggleImageButton">
        <attr name="onImage" format="integer" />
        <attr name="offImage" format="integer" />
    </declare-styleable>
</resources>

在我的自定义 ui 的构造函数中定义

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ToggleImageButton);

int offResource = a.getInt(R.styleable.ToggleImageButton_offImage, -1);

基本上第二行末尾的 -1 是此数据类型的默认参数。它在开发时可能会或可能不会在 XML View 中初始化,这允许以这种方式指定默认行为。

最佳答案

根据the documentation, Resources.getIdentifier()

Returns 0 if no such resource was found. (0 is not a valid resource ID.)

更新(5 年后 thanks to Micer ):

  • API 29+:Resources.ID_NULL 常量
  • 旧 API:ResourcesCompat.ID_NULL

关于Android 资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130789/

相关文章:

android - 使用 Android 的内置声学回声消除

android - Android 上的默认文本大小是多少?

java - 如何向 EditTextPreference 添加消息?

kubernetes - 检查 Kubernetes Pod CPU 和内存利用率

java - Java中如何查找未关闭的I/O资源?

java - 为什么 Context ClassLoader 返回带有感叹号的路径?

用于录制的 Android Camera2 api 不起作用

android - 使用启用了 proguard 的 GSON

drupal - 发生客户端错误 - Drupal 8 REST API Post 方法

android - 为什么我的新资源没有添加到 R 类中显示的 res/子文件夹中?