Какой правильный синтаксис для определения активности в файле манифеста
Каков правильный способ добавления активности к AndroidManifest.xml
?
Вообще-то я видел во многих местах действие, определенное как
<activity
android:name="MyFirstActivity"
android:label="@string/title_first_activity">
</activity>
и в некоторых местах как
<activity
android:name=".MySecondActivity"
android:label="@string/title_second_activity">
</activity>
Я просто хотел знать, если положить точку (.), это правильный способ добавления активности в файл манифеста.
Я прошел много сообщений, но не нашел точного решения. Это указывает на то, что точка (.) не требуется, а this предлагает использовать точку (.). Итак, каков правильный путь?
Ответы
Ответ 1
точка означает ваше имя пакета. Это более короткий тип декларации.
Если вы определяете подкласс, как вы почти всегда хотели бы для компонента классы (Activity, Service, BroadcastReceiver и ContentProvider), подкласс объявляется через атрибут name. Имя должно включают полное обозначение пакета. Например, подкласс службы может быть объявлено следующим образом:
<manifest . . . >
<application . . . >
<service android:name="com.example.project.SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
Однако, в качестве сокращения, если первым символом строки является период, строка добавляется к имя пакета приложения (как указано в элементе атрибут пакета). Следующее назначение такое же, как и одно выше:
<manifest package="com.example.project" . . . >
<application . . . >
<service android:name=".SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
При запуске компонента Android создает экземпляр именованного подкласса. Если подкласс не является указанный, он создает экземпляр базового класса.
http://developer.android.com/guide/topics/manifest/manifest-intro.html Объявление имен классов
Ответ 2
да, поставив точку правильно.
если вы видите самозакрывающуюся активность затмения, это выглядит.
<activity
android:name=".MyFirstActivity"
android:label="@string/app_name">
</activity>
поэтому его правильный подход, наш идеал может понять
Ответ 3
Использование относительных путей - это нормально.
Путь отделен точкой, а не косой чертой.
android:name=".one_path_level_down.MainActivity"
android:name=".one_path_level_down.DetailActivity"
Верхний уровень - это уровень пакета в файле манифеста в "package =". Примерно так:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.abc.myapp1" >
Ответ 4
Мы определяем пакет вверху в теге манифеста для этой цели только, что нам не нужно объявлять его снова и снова, если какое-либо действие находится в одном пакете. Мы начинаем писать только точка чтобы знать, что он принадлежит к одному и тому же пакету. Все действия, находящиеся в одном пакете, будут доступны через это, и если вы объявите новый пакет, отличный от com.example, скажем, com.example.sample, вы должны только определить .sample.YourActivityname.Это это. Мы делаем это, ссылаясь на правильный пакет.
надеюсь, что это поможет вам.
Ответ 5
http://developer.android.com/guide/topics/manifest/activity-element.html#nm
android:name
The name of the class that implements the activity, a subclass of Activity. The attribute value should be a fully qualified class name
(например, "com.example.project.ExtracurricularActivity" ). Однако, поскольку стенографию, если первый символ имени - это период (для Например, ".ExtracurricularActivity" ), он добавляется к пакету имя, указанное в.
Итак, данный ApplicationManifest.xml:
...
так как android: name= ". view.TaskListListView" имеет ведущий период, поэтому он интерпретируется как андроид:. name= "com.stackoverflow.android.geotask.view.TaskListListView"
источник
Ответ 6
просто сделайте так, это означает, что вы работаете в этом пакете com.your.package
мы упомянуты MySecondActivity
, эта деятельность относится к этому пакету
<activity
android:name="com.your.package.MySecondActivity"
android:label="@string/title_second_activity">
</activity>
Ответ 7
точка не нужна, но в основном это означает: класс активности живет в одном пакете приложения. Итак, если ваш пакет приложений: com.your.package, то:
- . Ваша активность означает, что ваш класс находится внутри com.your.package.
- YourActivity означает, что ваш класс находится внутри com.your.package(тот же
как указано выше).
Итак, это означает, что это в основном то же самое
Чтобы подтвердить свой ответ, посмотрите ответ CesarB, я также получил исходный коэффициент android, и я полностью согласен с ним, вот как работает соглашение об именах AndroidManifest:
- Если имя начинается с точки, всегда префикс его с пакетом.
- Если имя имеет точку где-нибудь еще (не в начале), не префикс.
- Если имя не имеет точки вообще, также префикс его с пакетом.