@ + id / android:list和@id / android:list有什么不同?

时间:2010-07-16 11:16:30

标签: android syntax

我开发了android应用程序,还有一个问题。

如您所知,当我们使用LiveActivity时,我们必须为ListView ID指定@ id / android:list。

但是,当我使用@ + id / android:list而不是@ id / android:list时,它工作正常。

@ + id / android:list和@id / android:list ??

之间有什么不同

4 个答案:

答案 0 :(得分:7)

@@+之间的根本区别在于@+表示您需要添加新ID,@本身告诉编译器要查找现有的身份。

答案 1 :(得分:4)

  

如您所知,当我们使用LiveActivity时,   我们必须为@ id / android:list指定   ListView ID。

不,你没有。 You must specify @android:id/list for the ListView ID for use with ListActivity

  

但是,当我使用@ + id / android:list时   而不是@ id / android:list,它是   工作正常。

不,那些会给你编译错误。冒号在Java字段名称中不是有效字符,因此这些ID是非法的。

切换回合法的Android语法,如果您要声明自己的ID(值中没有android:),则第一次在文件中使用该ID时,您应该拥有{{1} } 标志。第二次及以后的时间,+符号是不需要的,但如果你也在那里似乎没有任何伤害。

答案 2 :(得分:1)

回应What is different between @+id/android:list and @id/android:list?

似乎有两种方法可以引用平台ID android.R.id.list@android:id/list@id/android:list。 ListActivity文档显示了两者(文本中的第一个,示例中的第二个),但没有说明是否存在任何差异。

作为ListView的id的@+id/android:list似乎也有效。我假设这里发生的是android.R.id.list标识符的副本被添加到应用程序自己的ID列表中。

我认为@android:id/list是引用android.R.id.list的最明确方式。

答案 3 :(得分:1)

Android中的

资源ID 特定于一个软件包(这很好,否则如果你的应用程序同时处理多个软件包,你会遇到很多冲突)。

@+id/list 会在您的app (=your package)中创建名称为 "list" 的资源ID,并为其指定唯一ID。在代码中,这将是 R.id.list

@android:id/list 将使用Android软件包中的ID "list" (在代码中,它将是 {{1} }