0

在通过教程构建我的第一个 Android 应用程序时,我到达了一个部分,它指出@+id/前缀不仅引用gen/R.java文件中定义的资源,而且+标志还表明它第一次遇到它,因此它将创建它。考虑这个代码片段:

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />

在阅读了第一个链接中与资源相关的侧边栏以及它链接到的名为提供资源的文章(在某种程度上粗略)之后,我无法从文档中获得关于范围的非常明确的声明带@+id/前缀的资源。我知道您可以在每个前缀内拥有一个同名的资源:

注意:此字符串资源与元素 ID 同名:edit_message。但是,对资源的引用始终由资源类型(例如 id 或 string)限定,因此使用相同的名称不会导致冲突。

但我要开车的是这个。根据文档,我似乎不能像edit_message在两个不同的活动中那样为两个控件提供资源,因为会有冲突。

我在这里担心的是,我可能必须在id属性前面加上Activity名称以保持它们的唯一性,以便我可以从代码中访问这些控件。

我在这里的陈述和假设是否正确?

4

1 回答 1

3

您可以将确切的 XML 块放在另一个布局文件中,它会正常工作。@+id 如果尚未定义,则生成一个新的 id。当您的应用程序被打包时,打包工具将创建一次 id,所有其他人将正确引用该 id。

只要您最终没有在同一布局中使用相同 id 的两个 UI 组件,一切都很好。

于 2013-07-31T17:50:35.680 回答