Android: "@+id/" 和 "@+id/"

Android: "@+id/" and "@+id/"

根据this线程,我需要第一次使用@+id/来创建资源。

但是,如果我忘记了该资源之前已创建并使用 @+id/ 重新创建了怎么办?我有一些输入并为仍未声明的元素设置 nextFocusDown

<EditText 
...
android:nextFocusDown="@+id/myinput2"/>

下面 200 行我用 @+id 创建了这个元素,因为我忘了它已经声明了。

<EditText 
...
android:id="@+id/myinput2"/>

它是这样工作的,但它会引起问题吗?

It works like this but can it cause an issue?

不,不能。始终使用 @+id/。到现在为止,Android 构建环境已经足够聪明,可以解决这个问题。

如果将具有相同 id 的两个元素放在同一个 layout 文件中,它会生成 IDE 错误(红色下划线)并且您将无法编译.

一些快速定义:

  • @+id/foo 表示 "use the id foo, and create it if it doesn't exist"
  • @id/foo表示"use the id foo"(如果idfoo不存在会报错)

以前,有理由更喜欢 @id 而不是 @+id(如果您试图通过不存在的 ID 引用视图,系统会告诉您),但现在系统足够聪明,即使写 android:layout_below="@+id/idthatdoesntexistanywhere" 也会被标记为错误:

所以总是使用@+id