27 votes

Nom de l'activité dans AndroidManifest.xml

Est-il nécessaire pour démarrer l'activité de nom avec le point (".") dans le fichier manifest.? par exemple, l'activité de ContactManager commence par un '.'

<activity android:name=".ContactManager" android:label="@string/app_name">

où que l'activité ContactAdder est sans dot

<activity android:name="ContactAdder" android:label="@string/addContactTitle">

dans le fichier manifeste de ContactManager échantillon http://developer.android.com/resources/samples/ContactManager/AndroidManifest.html

Mise à JOUR: Si le nom de l'activité démarre avec . il est annexé au paquet de nom pour devenir le nom complet, mais ce qui se passe si elle ne commence pas par '.'

29voto

CesarB Points 18048

Je suis curieux aussi, et suis allé la chercher dans le code source Android.

J'ai trouvé ce qui semble être le code correspondant à l' platform/frameworks/base référentiel, en tools/aapt/Resource.cpp le fichier. La fonction correspondante fullyQualifyClassName, appelé par massageManifest.

Cette règle s'applique est expliqué dans un bloc de commentaire dans l' fullyQualifyClassName fonction de:

// asdf     --> package.asdf
// .asdf  .a.b  --> package.asdf package.a.b
// asdf.adsf --> asdf.asdf

Expliquant cette règle, nous avons:

  1. Si le nom commence par un point, toujours préfixe avec le package.
  2. Si le nom a un point n'importe où d'autre, faites-le précéder.
  3. Si le nom n'a pas de dot à tous, également préfixe avec le package.

Donc, pour répondre à votre question: tant qu'il n'y a pas de point n'importe où ailleurs, les deux façons d'écrire le nom de l'activité devrait avoir le même effet.


Comme un supplément, l' massageManifest fonction montre où cette règle est appliquée:

  • Dans l' application élément, sur l' name et backupAgent attributs.
  • Dans l' activity, service, receiver, provider, et activity-alias éléments, sur l' name d'attribut.
  • Dans l' activity-alias élément, sur l' targetActivity d'attribut.

13voto

jaywon Points 3820

À partir de l' Android Dev Guide < activité > référence:

Le nom de la classe qui implémente l'activité, une sous-classe de l'Activité. La valeur de l'attribut doit être entièrement qualifié nom de la classe (comme, "com.exemple.projet.ExtracurricularActivity"). Cependant, comme une abréviation, si le premier caractère de ce nom est une période (pour exemple, ".ExtracurricularActivity"), il est ajouté au nom du paquet spécifié dans l'élément. Il n'y a pas de valeur par défaut. Le nom doit être spécifié.

3voto

Suresh Manchi Points 3264

Récemment, j'ai entendu le package de l'application du concept dans Android et la réponse à cette question, pensé que je devais partager.

Si le package d'application(spécifié dans le manifeste) est le même que le package java dans lesquels l'Activité est présent, alors il n'est pas nécessaire de spécifier le nom complet du paquet dans le manifeste pour les activités. Si le package de l'application nom est différent du nom du package java puis nom de l'activité devrait être au complet avec le nom du package.

Ce blog donne des informations sur le package d'application et les packages java dans android.

http://blog.javia.org/android-package-name/comment-page-1/#comment-14063

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X