Разница между "@ id /" и "@ + id /" в Android - PullRequest
430 голосов
/ 17 февраля 2011

Какая разница между @id/ и @+id/?

В @+id/ знак плюс + дает указание создать новыйимя ресурса и добавьте его в файл R.java, но как насчет @id/?Из документации ID: при ссылке на ресурс Android ID вам не нужен символ плюса, но вы должны добавить пространство имен пакета Android, например:

android:id="@android:id/list"

Но на изображении ниже Eclipse не предлагает никаких @android:id/.

Image showing the suggestion for the @/id and @+/id

Являются ли @id/ и @android:id/ одинаковыми?

Ответы [ 13 ]

1 голос
/ 15 января 2018

Разница между @+id и @id составляет:

  • @+id используется для создания идентификатора для представления в R.java файле.
  • @id используется для ссылки на идентификатор, созданный для представления в файле R.java.

Мы используем @+id с android:id="", но что, если идентификатор не создан, и мы передаем его перед созданием (прямая ссылка).

В этом случае мы используем @+id для создания идентификатора, и при определении представления мы должны ссылаться на него.

Пожалуйста, используйте следующий код:

<RelativeLayout>

     <TextView
        android:id="@+id/dates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/spinner" />

   <Spinner
     android:id="@id/spinner"
     android:layout_width="96dp"
     android:layout_height="wrap_content"
     android:layout_below="@id/dates"
     android:layout_alignParentRight="true" />

</RelativeLayout>

В приведенном выше коде идентификатор для Spinner @+id/spinner создается в другом представлении, и при определении счетчика мы ссылаемся на созданный выше идентификатор.

Итак, нам нужно создать идентификатор, если мы используем представление до того, как представление было создано.

1 голос
/ 21 декабря 2016

Разница между “@+id/” и “@id/” в Android

Первый используется для создания ID конкретного компонента пользовательского интерфейса, а другой - для ссылки на конкретный компонент

1 голос
/ 31 мая 2014

Если элемент представления выполняет одну и ту же операцию, вы можете использовать @ + id для каждой записи в любом макете, поскольку во время компиляции нескольких @ + id / foo файл R.java создает только одно перечисление.Так, например, если у меня есть кнопка сохранения на каждой странице, которая выполняет одну и ту же операцию, я использую android: id = "@ + id / button_save" в каждом макете.Файл R.java содержит только одну запись для button_save.

...