2010-11-27 111 views
12

我已经阅读了大量的Android文档,我还没有找到任何声明“@ + id”的id值前缀的含义。我知道什么是“@string”及其意义的变体,而不是“+”的变体。除了给我答案之外,你能告诉我在Android文档中哪里有文档记录吗?“@ + id”是什么意思?

回答

39

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

这是常见的做法是在布局中定义一个新的视图时使用@+id/foo,然后用@id/foo从布局的另一部分引用视图(比如说,在一个RelativeLayout的层次)或R.id.foo从代码中引用它。


UPDATE:文档是在这里:Declaring Layout - Attributes - 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"); 

很抱歉,但我不知道在哪里的文件是这个...

1

当您引用XML中的任何资源对象时,at符号(@)是必需的。它后面是资源类型(在这种情况下是id)。

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

0

加号表示您正在创建一个不存在的新ID。例如“@ + id/xyz”。如果您编写“@ id/xyz”,则表示您正在引用布局另一部分的视图。