Манифест Android: почему иногда «. <classname>» вместо просто «<classname>»? - PullRequest
5 голосов
/ 07 сентября 2011

Что означает точка?

большую часть времени я просто пишу:

<activity android:name="OneActivity" ...>...</activity>

Но иногда я вижу в автоматически сгенерированном файле:

<activity android:name=".OtherActivity" ...>...</activity>

А также в Документах для обслуживания Я вижу, что они пишут

<manifest ... >
  ...
  <application ... >
      <service android:name=".ExampleService" />
      ...
  </application>
</manifest>

Но я никогда не видел различий в попытках того или другого.

Ответы [ 5 ]

4 голосов
/ 07 сентября 2011

Если вы посмотрите выше, есть определение пакета, например

package="app.package.name"

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

app.package.name.another

, и в этом пакете есть класс, вы должны определить имя класса, например

<activity android:name=".another.activityname"
3 голосов
/ 07 сентября 2011

Из справочника по Руководству по Android *

Имя класса, реализующего действие, подкласс Activity.Значением атрибута должно быть полное имя класса (например, «com.example.project.ExtracurricularActivity»).Однако для краткости, если первый символ имени является точкой (например, «.ExtracurricularActivity»), он добавляется к имени пакета, указанному в элементе.Там нет по умолчанию.Необходимо указать имя.

Кредит: jaywon от Название действия в android Манифест в переполнении стека

2 голосов
/ 07 сентября 2011

Вы можете найти некоторые отличия, если создадите более одного пакета, android проверяет класс в папке по умолчанию, которую вы могли упомянуть при создании проекта.

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

1 голос
/ 07 сентября 2011

Для получения любой активности Android требует полностью определенного имени ... Для этого у файлов нашего манифеста есть атрибут (т.е. package = "com.test"). Поэтому, чтобы сделать его полностью квалифицированным, мы ставим точку перед именем активности (т.е. android: name= ". FirstActivity")

Если вы не хотите использовать точку перед каждым действием, просто поставьте точку после атрибута пакета в теге manifest. (Т.е. package = "com.test.") И напишите имя действия.без точки (т. е. android: name = "FirstActivity"), чтобы в целом можно было создать полное имя (т. е. com.test.FirstActivity)

0 голосов
/ 30 сентября 2012

Точка перед именем означает, что это скрытый файл, который не будет виден другим. Вы можете увидеть на YouTube, как скрыть файлы по ячейке Android.

...