Android资源ID

Android资源ID,android,resources,Android,Resources,我正在从自定义xml视图类型检索自定义资源ID。我被要求为检索指定一个默认的int值,我想知道id的范围是什么?它们始终是正的还是包含零 i、 e-1是有效的“null”引用和/或0是有效的“null”引用吗 谢谢 编辑 自定义XML资源/属性文件 <resources> <declare-styleable name="ToggleImageButton"> <attr name="onImage" format="integer" /&g

我正在从自定义xml视图类型检索自定义资源ID。我被要求为检索指定一个默认的int值,我想知道id的范围是什么?它们始终是正的还是包含零

i、 e-1是有效的“null”引用和/或0是有效的“null”引用吗

谢谢

编辑

自定义XML资源/属性文件

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

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

0是资源ID的空值/无效值。

根据

如果没有此类资源,则返回0 被发现了。(0不是有效的资源ID。)

因此,您可以使用0。

根据,
0
与在XML中设置
@null
相同,这意味着您可以在需要清除资源时使用它


这是一个无效的资源ID。

-1应该足够安全,尽管我找不到任何关于此的文档。基于XML的资源ID不是总是自动生成并存储在R.java中吗?“我被要求指定一个默认的int值”是什么意思?如果您能显示代码行,这会很有帮助。@DJC,Android更喜欢默认值,而不是抛出异常,以防检索不可为空的值。@Kurru Android资源id始终有一个包标识符,因此它们的值不能为0。最好使用@Micer提到的
ID\u NULL
。该常数仅在API 29+上可用,不幸的是,对于较旧的API,它在
ResourcesCompat
中作为
androidx.core.content.res.ResourcesCompat.ID\u NULL
提供。
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ToggleImageButton);

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