TabHost и TabWidget android:id

Я заметил в своем макете main.xml, что я создаю макет вкладки, что объявление «android: id» отличается от того, что я использовал для кнопки, текстового просмотра и т. д.

Например:

<TabWidget android:id="@android:id/tabs" />

и пример на кнопках:

 <Button
    android:id="@+id/button_next" />

В чем разница двух деклараций?


person Law Gimenez    schedule 07.12.2011    source источник


Ответы (3)


Определенные идентификаторы используются фреймворком Android. Например, tabwidget, list и т. д. Когда действие запускается, оно находит необходимые элементы путем поиска в макете этих идентификаторов.

Но когда вы настраиваете представление и id для своих собственных приложений, вы используете только id/yourid. Это будет использоваться только вашим кодом приложения.

person blessenm    schedule 07.12.2011

Когда вы назначаете идентификатор следующим образом:

<Button
    android:id="@+id/button_next" />

Вы создаете новый идентификатор ресурса в ресурсах вашего проекта в файле R.java.

Когда вы назначаете идентификатор с префиксом @android:id, вы ссылаетесь на ресурс, существующий в пространстве имен android.

I.e:

<TabWidget android:id="@android:id/tabs" />

В этом случае вы назначаете идентификатор @android:id/tabs идентификатору TabWidget, потому что это позволяет вашему экземпляру TabWidget наследоваться от существующего ресурса в пространстве имен Android.

См. эту страницу для получения дополнительной информации о различных назначениях ID (прокрутите в раздел Атрибуты)

person WilHall    schedule 07.12.2011

блессен прав. Пока мы загружаем приложение, оно будет искать идентификатор по умолчанию, созданный платформой Android. и второй - это то, что мы используем, чтобы определить его только для целей нашего приложения.

Первый используется для всех приложений, а второй используется только для этого конкретного приложения.

Надеюсь, вы уловили суть. Спасибо.

person Shreyash Mahajan    schedule 07.12.2011
comment
Ага, теперь вроде понял. Протестировал это, а также просмотрел файл R.java. Спасибо чувак! - person Law Gimenez; 07.12.2011
comment
Вы можете проголосовать, если мой ответ покажется правильным и полезным для других. - person Shreyash Mahajan; 07.12.2011
comment
@thekidfrankie: нет проблем. наслаждаться. - person Shreyash Mahajan; 07.12.2011