我开发了android应用程序,还有一个问题。
如您所知,当我们使用LiveActivity时,我们必须为ListView ID指定@ id / android:list。
但是,当我使用@ + id / android:list而不是@ id / android:list时,它工作正常。
@ + id / android:list和@id / android:list ??
之间有什么不同答案 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)
资源ID 特定于一个软件包(这很好,否则如果你的应用程序同时处理多个软件包,你会遇到很多冲突)。
@+id/list
会在您的app (=your package)
中创建名称为 "list"
的资源ID,并为其指定唯一ID。在代码中,这将是 R.id.list
。
@android:id/list
将使用Android软件包中的ID "list"
(在代码中,它将是 {{1} }