2 votes

Le constructeur de la sous-classe de l'application Android n'est pas appelé

J'ai une classe dans mon application Android qui sous-classe l'objet AndroidApplication. Les documents disent :

public void onCreate ()

Depuis : API Level 1 Appelé lorsque le au démarrage de l'application, avant toute d'autres objets de l'application n'aient été créés. Les implémentations doivent être aussi rapide l'initialisation paresseuse de l'état) car le temps passé dans cette fonction a un impact direct sur les performances de le démarrage de la première activité, du premier service, ou récepteur dans un processus. Si vous surchargez cette méthode, assurez-vous de

appeler super.onCreate().

J'ai placé un point d'arrêt sur le constructeur de ma sous-classe et lorsque j'exécute mon application, il n'est jamais atteint. Naturellement, lorsque j'appelle la méthode getInstance() de la sous-classe à partir d'un autre code, elle renvoie NULL puisque la variable d'instance est (censée être) initialisée lors de l'appel du constructeur.

Quelqu'un peut-il me dire ce qui ne va pas ? Je suppose, d'après la documentation, que je n'ai pas à créer moi-même une instance de la sous-classe AndroidApplication, ou bien est-ce le cas ? Est-ce que je suis censé modifier mon fichier manifest d'une manière ou d'une autre pour ajouter la sous-classe AndroidApplication et si oui, comment ?

-- roschler

7voto

Robert Oschler Points 4098

Je publie la réponse ici pour les autres. Oui, vous devez ajouter le nom de la sous-classe de votre objet Application dans le manifeste Android. Pour les utilisateurs d'Eclipse, la façon la plus simple de le faire est d'ouvrir le fichier AndroidManifest.xml, de sélectionner l'onglet Application dans l'éditeur de manifeste, et d'utiliser le bouton Parcourir à côté de l'élément Nom pour trouver le nom de la sous-classe de l'objet de l'application Android et le sélectionner. Le fichier manifest sera mis à jour correctement pour l'enregistrer. C'est ce que je viens de faire et cela a fonctionné.

1voto

Ran Points 190

J'ai eu un problème avec le fait que le nom de la classe de mon application n'était pas précédé d'un . Cela devrait être : Android:name=".MyApp"

puisque la classe MyApp se trouve dans le paquetage défini dans le manifeste.

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