@ + id / declarations的资源范围?

时间:2013-07-31 17:46:56

标签: android android-layout

在完成教程build my first Android application时,我到达了一个部分,其中指出@+id/前缀不仅引用了gen/R.java文件中定义的资源,而且引用了{{ 1}}符号也表示它第一次遇到它所以它会创建它。请考虑以下代码段:

+

在阅读了第一个链接中与资源相关的侧栏以及链接到名为Providing Resources的文章(稍微粗略一点)之后,我无法从中获得非常明确的声明有<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> 前缀的资源范围的文档。据我所知,您可以在每个前缀中包含一个具有相同名称的资源:

  

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

但我正在开车的是这个。基于出现的文档,我在两个不同的活动中不能将两个控制资源作为@+id/,因为会发生冲突。

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

我在声明和假设中是否正确?

1 个答案:

答案 0 :(得分:3)

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

只要你没有在同一个布局中使用相同id的两个UI组件,一切都没问题。