почему в документах для Android используется другой синтаксис идентификатора? - PullRequest
4 голосов
/ 08 апреля 2010

Эта страница в документации Android определяет идентификатор элемента следующим образом:

<TextView android:id="@+id/label" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:text="Type here:" />

Однако эта страница определяет это как:

<EditText id="text"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="Hello, World!" />

Я думал, что у меня было приличное понимание того, что происходит, пока я не увидел этот второй пример. В первом случае вам нужен символ +, чтобы идентификатор 'label' был добавлен в файл R, правильно? Во втором случае, не будет ли идентификатор EditText добавлен в файл R, поскольку он не содержит символа +?

Кроме того, второй пример не включает пространство имен android в id. Влияет или нет пространство имен Android на то, будет ли этот идентификатор добавлен в файл R?

Спасибо за любые разъяснения.

Ответы [ 4 ]

4 голосов
/ 08 апреля 2010

Этот формат без андроида: пространство имен

 id="text"

относится к более ранней версии Android SDK.

3 голосов
/ 08 апреля 2010

Вы правы в своей первоначальной оценке. Стоит отметить, что второй идентификатор тега

<EditText id="text"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="Hello, World!" />

Отсутствует пространство имен android:, поэтому оно на самом деле не является тегом xml для android. Первый пример того, как добавить идентификатор этого представления в R-файл, чтобы вы могли получить к нему доступ в своем коде. Честно говоря, я не уверен, какова цель идентификатора во втором примере *, но я знаю, что Android не будет знать, что с ним делать. Первый - правильный синтаксис.

* Это просто предположение, но я готов поспорить, что это была опечатка, которую кто-то не заметил или не захотел исправить, потому что пытался проиллюстрировать что-то еще.

1 голос
/ 08 апреля 2010

Второй пример неверен. Атрибутом всегда является android: id, а значение должно быть либо @ + id / myId (чтобы создать новый идентификатор с именем «myId»), либо @ id / myId (чтобы использовать уже определенный идентификатор с именем «myId».) Использование @android : id / theId позволяет вам использовать идентификаторы, определенные платформой Android.

1 голос
/ 08 апреля 2010

Знак плюс (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам (в файле R.java). Существует ряд других ресурсов ID, предлагаемых платформой Android. При ссылке на идентификатор ресурса Android вам не нужен символ плюс, но вы должны добавить пространство имен пакета Android, например:

андроид: идентификатор = "@ андроид: идентификатор / пустой"

Взято из Объявление макета | Разработчики Android в разделе ID.

Однако в вашем втором примере перед идентификатором text не предоставлено @android:id/, поэтому, если честно, я никогда раньше не видел эту запись и удивляюсь, может ли это быть опечаткой со стороны автора. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...