在完成教程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
名称,以保持其唯一性,以便我可以从代码中访问这些控件。
我在声明和假设中是否正确?
答案 0 :(得分:3)
您可以将精确的XML块放在另一个布局文件中,它可以正常工作。如果尚未定义,@ + id会生成一个新的id。当您的应用程序打包时,打包工具将创建一次ID,所有其他人将正确引用该ID。
只要你没有在同一个布局中使用相同id的两个UI组件,一切都没问题。