Разница между "@идентификатор/" и "@+ID или" в Android




в чем разница между @id/ и @+id/?




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



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


но в изображение ниже затмение не предлагает какой-либо @android:id/.



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




Are @id/ и @android:id/ то же самое?


1168   13  

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.java file). Существует ряд других ресурсов 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

    Ничего не найдено.