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

Are
@id/и@android:id/то же самое?
13 ответов:
вы имеете в виду
Android resources, которые уже определены в системе Android, с@android:id/..в то время как для доступа к ресурсам, которые вы определили/создали в своем проекте, вы используете@id/..Подробнее
согласно вашим разъяснениям в чате, вы сказали, что у вас есть такая проблема :
если мы используем тег
android:id="@id/layout_item_id"он не работает. Вместо этого@+id/работает так в чем же разница здесь? И это был мой оригинал вопрос.Ну, это зависит от контекста, когда вы используете атрибут XML
android:id, затем вы указываете новый идентификатор и указываете синтаксическому анализатору (или называете его построителем) создать новую запись вR.java, таким образом, вы должны включать+знак.в то время как в другом случае, как
android:layout_below="@id/myTextView", вы ссылаетесь на идентификатор, который уже был создан, поэтому parser связывает это с уже созданным идентификатором вR.java.больше Информация Снова
как вы сказали в чате, обратите внимание, что
android:layout_below="@id/myTextView"не распознает элемент с идентификатором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"это просто поможет сослаться на уже сгенерированный идентификатор..
знак "плюс" (
+) перед типом ресурса требуется только при первом определении идентификатора ресурса. При компиляции приложения, инструментов SDK используйте идентификатор имя, чтобы создать новый идентификатор ресурса в файл, который ссылается наEditTextэлемент. С идентификатором ресурса, объявленным один раз таким образом, другие ссылки на идентификатор не нуждаются в знаке плюс. Использование знака плюс необходимо только при указании нового идентификатора ресурса и не требуется для конкретных ресурсов, таких как строки или макеты. Дополнительные сведения об объектах ресурсов см. в боковом поле.от: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 должен проанализировать и развернуть остальную часть строки идентификатора и определить ее как ресурс идентификатора. Плюс-символ (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам (вR.javafile). Существует ряд других ресурсов ID, которые предлагаются платформой Android. При ссылке на Android идентификатор ресурса, вам не нужен плюс-символ, но необходимо добавитьandroidпакета, например, так:
android:id="@android:id/empty"
есть ошибка с Eclipse, где иногда, если вы только что создали новый
@+id/.., оно не будет добавлено немедленно к R.java файл, даже после чистой сборки проекта. Решение: перезапустите Eclipse.Это, я думаю, должно быть решено как можно скорее, потому что это может (и по опыту, будет) запутать некоторых разработчиков, думая, что что-то не так с их синтаксисом, и попытаться отладить его, даже если на самом деле нечего отлаживать.
@id / и @android: id / не то же самое.
@ИД/ ссылающиеся на идентификатор в приложении, @андроид:идентификатор/ ссылка на товар на платформе Android.
Eclipse-это неправильно.
Android использует некоторые файлы, называемые ресурсами, где хранятся значения для XML-файлов.
теперь, когда вы используете @id / для объекта XML, он пытается ссылаться на идентификатор, который уже зарегистрирован в файлах значений. С другой стороны, при использовании @+id/ он регистрирует новый идентификатор в файлах значений, как это подразумевается символом'+'.
надеюсь, что это помогает :).
Если элемент представления выполняет ту же операцию, вы можете использовать @ + id для каждой записи в любом макете, потому что во время компиляции нескольких @ + id/foo R.java файл создает только одно перечисление. Так, например, если у меня есть кнопка сохранения на каждой странице, которая выполняет ту же операцию, я использую android:id="@+id/button_save" в каждом макете. The R.java файл имеет только одну запись для button_save.
разница между " @ + id/ "и" @id/ " в Android
первый используется для создания идентификатора конкретного компонента пользовательского интерфейса, а другой используется для ссылки на конкретный компонент
разница между @ + id и @id:
@+id используется для создания идентификатора представления в R.java файл.
@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 мы ссылаемся на идентификатор, созданный выше.
Итак, мы должны создать идентификатор, если мы используем представление до того, как представление было создано.
Comments