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

Are
@id/и@android:id/то же самое?
13 ответов
вы ссылаетесь на Android resources , которые уже определены в системе Android, с @android:id/.. в то время как для доступа к ресурсам, которые вы определили/создали в своем проекте, вы используете @id/..
Подробнее
согласно вашим разъяснениям в чате, вы сказали, что у вас есть такая проблема:
если мы используем тег
android:id="@id/layout_item_id"он не работает. Вместо@+id/работает, так какая разница здесь? И это был мой оригинальный вопрос.
Ну, это зависит от контекста, когда вы используете атрибут XML android:id, затем вы указываете новый id и инструктируете парсер (или называете его построителем), чтобы создать новую запись в R.java, таким образом, вы должны включать + знак.
в то время как в другом случае, как android:layout_below="@id/myTextView", вы ссылаетесь на id, который уже был создан, поэтому парсер связывает это с уже созданным id в R.java.
больше Информация Снова
как вы сказали в чате, обратите внимание, что android:layout_below="@id/myTextView" не распознает элемент с id myTextViewесли он написан после элемента, в котором вы его используете.
знак + - это короткий путь для добавления идентификатора в список идентификаторов ресурсов. В противном случае вы должны иметь их в xml-файле, как это
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="my_logo" type="id"/>
</resources>
иногда вы видите ссылки в ваших файлах макета, таких как:
<listview id="@+id/android:list">
и
<listview id="@android:id/list">
какая разница?
.. Я рад, что вы спросили ☺
@+id/foo означает, что вы создаете идентификатор с именем foo в пространстве имен вашего приложения.
Вы можете обратиться к нему с помощью @id/foo.
@android:id/foo означает, что вы ссылаетесь на идентификатор, определенный в пространстве имен android.
' + ' означает создание символа, если он еще не существует. Вам это не нужно (и не следует использовать) при обращении к символам android:, потому что они уже определены для вас платформой, и вы не можете сделать свой собственный в этом пространстве имен в любом случае.
это пространство имен является пространством имен рамки.
например, вам нужно использовать @android:id/list потому что это идентификатор, который платформа ожидает найти.. (платформа знает только об идентификаторах в пространстве имен android.)
полностью скопировано с этого источник
Короче
android:id="@+id/my_button"
+ id плюс знак говорит android, чтобы добавить или создать новый идентификатор в ресурсах.
пока
android:layout_below="@id/my_button"
это просто помогает ссылаться на уже сгенерированный id..
знак "плюс" (
+) перед типом ресурса требуется только при первом определении идентификатора ресурса. При компиляции приложения средства SDK используют имя ID для создания нового идентификатора ресурса вR.javaфайл, который ссылается наEditTextэлемент. С идентификатором ресурса, объявленным один раз таким образом, другие ссылки на идентификатор не нуждаются в знаке плюс. Использование знака плюс необходимо только при указании нового идентификатора ресурса и не требуется для конкретных ресурсов, таких как строки или макеты. Дополнительные сведения об объектах ресурсов см. В разделе sidebox.
From:https://developer.android.com/training/basics/firstapp/building-ui.html
его очень просто:
"@+..."- создать новый
"@..."- ссылка на существующий
источник: https://developer.android.com/guide/topics/resources/layout-resource.html#idvalue
android:id="@+id/my_button"
символ at (@) в начале строки указывает, что синтаксический анализатор XML должен проанализировать и развернуть остальную часть строки ID и определить ее как ресурс ID. Символ плюс (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам (в ). Существует ряд других ресурсов ID, которые предлагаются платформой Android. При ссылке на Android идентификатор ресурса, вам не нужен плюс-символ, но необходимо добавить android пакета, например, так:
android:id="@android:id/empty"
есть ошибка с Eclipse, где иногда, если вы только что создали новый @+id/.., оно не будет добавлено немедленно к R.java файл, даже после очистки здания проекта. Решение: перезапустите Eclipse.
Это, я думаю, следует решить как можно скорее, потому что это может (и по опыту, будет) запутать некоторых разработчиков, думая, что что-то не так с их синтаксисом, и попытаться отладить его, даже если на самом деле нечего отлаживать.
@id / и @android: id / не то же самое.
@id / referencing ID в вашем приложении, @android: id / referencing элемент в платформе Android.
Eclipse-это неправильно.
Android использует некоторые файлы, называемые ресурсами, где хранятся значения для XML-файлов.
теперь, когда вы используете @id / для объекта XML, он пытается ссылаться на id, который уже зарегистрирован в файлах значений. С другой стороны, при использовании @+id/ он регистрирует новый id в файлах значений, как это подразумевается символом"+".
надеюсь, что это помогает :).
Если элемент представления выполняет ту же операцию, вы можете использовать @ + id для каждой записи в любом макете, потому что во время компиляции нескольких @ + id/foo R.java файл создает только одно перечисление. Так, например, если у меня есть кнопка сохранения на каждой странице, которая выполняет ту же операцию, я использую android:id="@+id/button_save" в каждом макете. В R.java файл имеет только одну запись для button_save.
разница между " @ + id/" и "@id/ " в Android
первый используется для создания идентификатора конкретного компонента пользовательского интерфейса, а другой - для ссылки на конкретный компонент
разница между @ + id и @id:
@+id используется для создания id для представления в R.java файл.
@id используется для ссылки на id, созданный для представления в R.java файл.
мы используем @ + id с android: id="", но что, если идентификатор не создан, и мы ссылаемся на него перед созданием(прямая ссылка).
в этом случае мы используем @+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/name"
android:layout_alignParentRight="true" />
</RelativeLayout>
в приведенном выше коде id для Spinner @+id / spinner создается в другом представлении, и при определении spinner мы ссылаемся на id, созданный выше.
Итак, мы должны создать идентификатор, если мы используем представление до того, как представление было создано.