Подтвердить что ты не робот

Какой правильный синтаксис для определения активности в файле манифеста

Каков правильный способ добавления активности к 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 предлагает использовать точку (.). Итак, каков правильный путь?

4b9b3361

Ответ 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:

  • Если имя начинается с точки, всегда префикс его с пакетом.
  • Если имя имеет точку где-нибудь еще (не в начале), не префикс.
  • Если имя не имеет точки вообще, также префикс его с пакетом.