Android 什么时候应该使用“@+”;id`而不是'@id`?
我在一个Android 什么时候应该使用“@+”;id`而不是'@id`?,android,android-layout,Android,Android Layout,我在一个中有一堆视图,我将该包含在一个相对视图中。我试图引用包含的视图s的ID作为我的其他视图s的锚,但Eclipse抱怨这些ID没有解析。当我第一次引用它们时,我使用@+id而不是@id找到了一个解决方法,而不是在我实际定义它们引用的对象时。我已经在样式中定义了这两个ID,并且在声明它们的包含的中定义了它们,所以如果我一直重复ID的定义,感觉效率有点低 这是正确的做法吗?我假设它是坏的,因为“+”是另一个初始化。我目前的假设是,当你第一次使用id时,你应该使用@+id,而不是当你初始化id将要
中有一堆视图
,我将该
包含在一个相对视图中。我试图引用包含的视图
s的ID作为我的其他视图
s的锚,但Eclipse抱怨这些ID没有解析。当我第一次引用它们时,我使用@+id
而不是@id
找到了一个解决方法,而不是在我实际定义它们引用的对象时。我已经在样式中定义了这两个ID
,并且在声明它们的包含的
中定义了它们,所以如果我一直重复ID的定义,感觉效率有点低
这是正确的做法吗?我假设它是坏的,因为“+”是另一个初始化。我目前的假设是,当你第一次使用id时,你应该使用@+id
,而不是当你初始化id将要表示的对象时,有点像C/C++
以及在使用函数的实际代码之前,他们如何要求至少在行中有一个函数原型
我的另一个问题是,当您使用Eclipse的基于GUI的UI构建器时,我注意到他们总是使用@+id
而不是@id
。这是可以接受的,因为我觉得它效率低下;这就好像应用程序将花费更多的时间来确定ID是否已在R.ID
中声明,使用@+ID
格式告诉Android资产编译器为元素分配ID,它实际上不是ID本身。因此,如果我使用@+id/myNewId
,资产编译器将创建一个名为myNewId
的新id,并为其提供一个数字。实际数字可以通过代码R.id.myNewId
访问
如果使用@id
,编译器将查找R.id.id
。您可以在XML文件中定义自己的id,如下所述:。您可以在res/values/[your\u filename].xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
然后参考@id\u name
,例如
您还可以使用Android命名空间中定义的Id:@Android:Id/empty
Android文档对此做了很好的解释:
这里还有一些进一步的讨论:等等,这样我就可以创建一个名为id
的xml文件,初始化那里需要的所有id,然后再也不必使用@+id
?我已经编辑来解释如何使用,但没有理由这样做,除非您想确保为两个不同的控件使用相同的id(在同一视图中,您永远不希望执行此操作)。我想@+id是在早期的开发人员非常恼火必须在id文件中添加每个id之后添加的一种约定,因为他们想在视图中添加一个新的小部件。别担心,我阅读了文档;我只是想确认一下,但感谢您付出的额外努力!我的问题是,当我使用mer时,eclipse有时会出错ge
和包含
标记。不确定是adb
的错误还是android的资源xml解析器的错误。这让我想知道什么时候应该使用+。