@id/和@+id/有什么区别?
在@+id/中,加号+指示创建一个新的资源名并添加到R.java文件中,但是@id/呢?从ID的文档:当引用一个Android资源ID时,你不需要加号,但必须添加Android包的命名空间,如下所示:
android:id="@android:id/list"
但是在下图中,Eclipse并没有建议使用任何@android:id/。
@id/和@android:id/相同吗?
@id/和@+id/有什么区别?
在@+id/中,加号+指示创建一个新的资源名并添加到R.java文件中,但是@id/呢?从ID的文档:当引用一个Android资源ID时,你不需要加号,但必须添加Android包的命名空间,如下所示:
android:id="@android:id/list"
但是在下图中,Eclipse并没有建议使用任何@android:id/。
@id/和@android:id/相同吗?
当前回答
你引用Android资源,这些资源已经在Android系统中定义了,使用@android:id/..当访问您在项目中定义/创建的资源时,使用@id/..
更多信息
根据你在聊天中的澄清,你说你有一个这样的问题:
如果我们使用android:id="@id/layout_item_id",这是行不通的。取而代之的是@+id/,那么这里有什么不同呢?这就是我最初的问题。
好吧,这取决于上下文,当你使用android:id的XML属性时,你指定了一个新的id,并指示解析器(或称其为构建器)在R.java中创建一个新条目,因此你必须包含一个+号。
而在另一种情况下,像android:layout_below="@id/myTextView",你引用的是一个已经创建的id,所以解析器链接到这个已经创建的id在R.java。
更多信息
正如你在聊天中所说,注意android:layout_below="@id/myTextView"不会识别id myTextView的元素,如果它写在你正在使用它的元素之后。
其他回答
Android使用一些称为资源的文件,其中存储XML文件的值。
现在,当您对一个XML对象使用@id/时,它试图引用一个已经在值文件中注册的id。另一方面,当你使用@+id/时,它会在值文件中注册一个新的id,就像'+'符号所暗示的那样。
希望这能有所帮助:)。
Eclipse中有一个bug,有时如果你创建了一个新的@+id/..,它不会立即添加到R.java文件中,即使在清理构建项目之后也是如此。解决方案是重新启动Eclipse。
我认为这个问题应该尽快解决,因为它可能(从经验来看,将会)使一些开发人员感到困惑,认为他们的语法有问题,并试图调试它,即使实际上没有什么需要调试的。
你引用Android资源,这些资源已经在Android系统中定义了,使用@android:id/..当访问您在项目中定义/创建的资源时,使用@id/..
更多信息
根据你在聊天中的澄清,你说你有一个这样的问题:
如果我们使用android:id="@id/layout_item_id",这是行不通的。取而代之的是@+id/,那么这里有什么不同呢?这就是我最初的问题。
好吧,这取决于上下文,当你使用android:id的XML属性时,你指定了一个新的id,并指示解析器(或称其为构建器)在R.java中创建一个新条目,因此你必须包含一个+号。
而在另一种情况下,像android:layout_below="@id/myTextView",你引用的是一个已经创建的id,所以解析器链接到这个已经创建的id在R.java。
更多信息
正如你在聊天中所说,注意android:layout_below="@id/myTextView"不会识别id myTextView的元素,如果它写在你正在使用它的元素之后。
摘自开发者指南:
android:id="@+id/my_button"
The at-symbol (@) at the beginning of the string indicates that the XML parser should parse and expand the rest of the ID string and identify it as an ID resource. The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file). There are a number of other ID resources that are offered by the Android framework. When referencing an Android resource ID, you do not need the plus-symbol, but must add the android package namespace, like so:
android:id=“@android:id/empty”
@id/和@android:id/不一样。
@id/引用应用程序中的ID, @android: ID /引用Android平台中的项目。
Eclipse是错误的。