Что отличается между @ + id / android: list и @ id / android: list? - PullRequest
8 голосов
/ 16 июля 2010

Я разработал приложение для Android и один вопрос.

Как вы знаете, когда мы используем LiveActivity, мы должны указать @ id / android: list для ListView ID.

Но, когда я использую @ + id / android: list вместо @ id / android: list, он работает нормально.

Что отличается между @ + id / android: list и @ id / android: list ??

Ответы [ 4 ]

7 голосов
/ 16 июля 2010

Принципиальное различие между @ и @+ заключается в том, что @+ сигнализирует о необходимости добавления нового идентификатора, @ сам по себе указывает компилятору искать существующий идентификатор.

4 голосов
/ 16 июля 2010

Как вы знаете, когда мы используем LiveActivity, мы должны указать @ id / android: список для ListView ID.

Нет, нет. Вы должны указать @android:id/list для ListView ID для использования с ListActivity.

Но, когда я использую @ + id / android: list вместо @ id / android: список, это работает нормально.

Нет, это даст вам ошибки компиляции. Двоеточия не являются допустимыми символами в именах полей Java, поэтому эти идентификаторы недопустимы.

Переключение обратно на допустимый синтаксис Android, если вы объявляете свой собственный идентификатор (без значения android: в значении), при первом использовании идентификатора в файле у вас должен быть знак +. Во второй и последующий раз знак + не нужен, хотя, кажется, он и не причинит вреда, если вы тоже там.

1 голос
/ 23 марта 2015

Идентификаторы ресурса в Android относятся к пакету (что хорошо, иначе у вас возникнет множество конфликтов, если ваше приложение будет работать с несколькими пакетами одновременно).

@+id/list создаст идентификатор ресурса в вашем app (=your package) с именем "list" и присвоит ему уникальный идентификатор. В коде это будет R.id.list.

@android:id/list будет использовать идентификатор "list" из пакета Android (который в коде будет android.R.id.list.

1 голос
/ 19 октября 2010

В ответ на Что отличается между @ + id / android: list и @ id / android: list? :

Похоже, существует два способа ссылки на платформуid android.R.id.list: @android:id/list и @id/android:list.Документация ListActivity показывает оба (первое в тексте, второе в примере), но не уточняет, есть ли разница.

@+id/android:list в качестве идентификатора ListView, похоже, тоже работает.Я предполагаю, что здесь происходит то, что копия идентификатора android.R.id.list добавляется в собственный список идентификаторов приложения.

По моему мнению, @android:id/list является наиболее простым способом ссылки на android.R.id.list.

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