“@+id”是什么意思?

16

我已经阅读了很多Android文档,但仍未找到任何说明"@+id"前缀的id值的含义。我知道"@string"及其变体的含义,但不知道带有"+"的变体的含义。除了回答我的问题,你能告诉我在Android文档中哪里可以找到这个信息吗?

我阅读了Android文档的相关部分,发现"id"值前缀 "@+id" 表示新定义一个资源标识符,并分配一个唯一的整数ID。这个信息可以在Android开发者文档的 "Resources Overview" 章节中找到。
4个回答

46

加号只是表示如果ID不存在,则应创建该ID。

在布局中定义新视图时,通常使用@+id/foo,然后使用@id/foo从布局的另一部分引用该视图(例如,在RelativeLayout层次结构中),或者使用R.id.foo从代码中引用它。


更新:文档在这里:声明布局 - 属性 - ID


3

在XML中引用任何资源对象时,必须使用“@”符号。它后面跟着资源类型(在本例中为id)。

只有在第一次定义资源ID时,才需要在资源类型前加上加号(+)。当编译应用程序时,SDK工具使用ID名称在项目的gen/R.java文件中创建一个新的资源ID,该资源ID指向UI元素。通过以这种方式声明资源ID一次,其他对ID的引用不需要加上加号。只有在指定新的资源ID时才需要使用加号,在具体的资源(如字符串或布局)中不需要使用加号。


3
这是将Android XML布局元素与Java代码链接的语法。因此,如果我想在TextView中显示文本,我必须这样做。
步骤一 - 定义布局。
<TextView
android:id="@+id/SaveResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SaveResult"
android:layout_x="16px"
android:layout_y="190px"
>
</TextView>

然后,在代码中,我使用@+id将布局与变量链接起来。将@+id视为数据库中的外键。

TextView lblSaveResult = (TextView)findViewById(R.id.SaveResult);

现在,它已经准备好使用了。当我分配文本时,它使用@+id来确定放置位置,还会考虑颜色、大小等因素。
lblSaveResult.setText("This text is now on the screen");

抱歉,我不知道这个的文档在哪里...

这句话涉及到IT技术,暂无法提供更多上下文信息。

1
加号表示你正在创建一个新的ID,该ID不存在。例如:“@+id/xyz”。如果你写成“@id/xyz”,则表示你正在引用布局的另一部分中的View。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接