在Android中,两个不同布局中View ID的值是否始终相同?

时间:2017-10-16 20:07:04

标签: android enums

我的收音机组有两个不同布局的相同单选按钮。 单选按钮在两种布局中都具有相同的ID。

<RadioGroup
    android:id="@+id/radioGroupAccess"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/radioGroupAccessOptionPublic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="public"/>

    <RadioButton
        android:id="@+id/radioGroupAccessOptionPrivate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="private"/>

</RadioGroup>

现在,我有一个公共/私有值的枚举(AccessType)。 我希望能够找出哪个Enum值对应于给定的RadioButton id值。

我可以依赖id值始终保持相同,即使我在两种不同的布局中定义了它吗? 如果没有,哪个视图id值会返回R.id.radioGroupAccessOptionPublic? 换句话说,我可以依靠以下代码来保持一致吗?

public static AccessType getAccessTypeByIdentifier(int radioButtonID) {
    AccessType type;

    switch (radioButtonID) {
        case R.id.radioGroupAccessOptionPublic:
            type = AccessType.PUBLIC;
            break;
        case R.id.radioGroupAccessOptionPrivate:
        default:
            type = AccessType.PRIVATE;
            break;
    }

    return type;
}

1 个答案:

答案 0 :(得分:0)

您的ID将是相同的,您也可以检查R.java文件以进行验证

实际上,您可以在res/values/ids.xml

上设置值
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="radioGroupAccessOptionPublic" type="id"/>
    <item name="radioGroupAccessOptionPrivate" type="id"/>
</resources>

然后像那样使用它

<RadioGroup
    android:id="@+id/radioGroupAccess"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioButton
        android:id="@id/radioGroupAccessOptionPublic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="public"/>

    <RadioButton
        android:id="@id/radioGroupAccessOptionPrivate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="private"/>

</RadioGroup>
  

没有&#39; +&#39;在#id;之前一部分。