IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Pourquoi créer des Activity sans les déclarer dans AndroidManifest ?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 479
    Par défaut Pourquoi créer des Activity sans les déclarer dans AndroidManifest ?
    bonjour,

    je fais des erreurs de débutant (que je suis) en tapant tout à la main car Eclipse fait peu de chose à ma place (en tout cas il faiut pas tout le travail minimal).

    Voilà, je crée une nouvelle activity, donc le fichier xml, et le fichier .java correspondant, avecl e code qui va bien dedans sans souci.

    Ensuite (débutant android que je suis), j'oublie de déclarer cette activity dans le AndroidManifest et je compile et lance mon application pour la tester.

    ça ne plante pas à la compilation ni au lancement de l'app dans le device, pas d'erreur notifiée nullepart (sauf si j'utilise le code qui a besoin de ma nouvelle activity dans mon application).?

    Donc je me dis "mais le compilateur est fou ou quoi , il a oublié de m'alerter que j'ai des activity non déclarées".

    Soit il me laisse faire car il y a une raison (une raison pour avoir des activity non déclarée ?)
    Soit le compilateur n'est pas parfait sur ce point là (j'en doute sérieusement).

    qu'en pensez-vous ?

    Je me dis que peut-être (comme en php), on peut déclarer des Activity dynamaiquement plutôt que les déclarer dès le départ dans le manifest.
    peut-on ?
    si oui, est-ce (comme en php) par un souci de mémoire utilisée au départ (moindre) ?

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 376
    Par défaut
    A mon avis c'est juste que le compilateur ne vérifie pas.
    En même temps c'est chaud a vérifier, une Activity c'est juste une classe qu'extends Activity...
    En plus des fois dans un package tu peux avoir une Activity qui traine là et qui sert à rien, que t'as juste oublié de supprimer.

    Et aussi bien tu finiras toujours pas faire planter le programme, puisque tu va bien essayer d'afficher au moins une fois l'Activity.

    Quand tu seras un peu moins débutant, tu penseras a déclarer tes Activity dans le Manifest.

  3. #3
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 479
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    A mon avis c'est juste que le compilateur ne vérifie pas..
    c'est bien dommage car Eclipse vérifie même les variables que tu déclares mais n'utilise pas!

    Arf, qui peut le plus ne peut pas le moins !

  4. #4
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 376
    Par défaut
    C'est plus simple de vérifier des variables que de vérifier si toutes les Activity sont déclaré dans le Manifest...

  5. #5
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 479
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    C'est plus simple de vérifier des variables que de vérifier si toutes les Activity sont déclaré dans le Manifest...
    Je suis de l'avis contraire car des variables ont en déclare un peu partout dans chaque fichier .java alors que les Activity, les xml sont tous centralisés dans layout.
    (mode débutant), sauf erreur chaque .xml de activity doit être référencé dans le manifest. Donc facile à compter ou voir si il en manque une.

  6. #6
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Ce que tu mentionnes n'est pas du ressort d'un compilateur, mais par contre le serait du plugin ADT.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Détecter a partir de l'héritage ?
    Rien ne dit qu'un objet de cette classe est instancié dans le code...
    La déclaration d'une classe "Activity" n'est pas suffisante (on peut surcharger cette classe, même dans un autre projet !)

    Détecter à partir de 'startActivity' ?
    Le lancement d'une activité se fait toujours par startActivity(class). Hors cette classe peut très bien être dynamique...
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class<?> activityClass = Class.forName(getString(R.string.destActivity));
    startActivity(activityClass,this);
    Déjà ça devient plus difficile pour le compilateur de traquer ça non ?

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Mais Eclipse/ADT/IDE/... pourrait proposer un wizard de création (ou ajouter à son wizard de création de classe la détection de) un truc "create activity" qui pourrait le rajouter dans le manifest au bon endroit.
    Même si je pense que la notion de "bon endroit" peut être nébuleuse dans le cas d'une application avec plusieurs noeud "application" (euh ... est-ce que c'est possible au moins ?).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 376
    Par défaut
    Quand on créer un projet Android, ça créer une classe qu'extends Activity et elle est déclaré dans le manifest, ce serait réalisable que quand on créer une classe : new -> class -> superclass : android.app.Activity il devrait l'ajouter dans le manifest.

    Et tu confonds fichier de layout en XML et Activity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sauf erreur chaque .xml de activity doit être référencé dans le manifest.
    Il ni a aucune référence à des fichiers xml dans le manifest.
    Enfin si les ressources : android:resource="@xml... @string etc...

    Mais les activity c'est le nom d'une classe.

  10. #10
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 479
    Par défaut
    je reviens ici car je donne l'une des réponses à ma question.


    je suis en train d'apprendre (je suis un tutoriel) et j'ai donc eu la réponse à ma question "pourquoi ne pas déclarer chaque vue-activity dans le manifest"
    ou plutôt pourquoi eclipse ne le fait pas systématiquement.


    réponse simple :
    je suis en train d'apprendre à faire des listview personnalisées et une liste personnalisée est faîte à partir un layout xml de format Activity et donc ce dernier n'a pas besoin d'être déclaré car ce n'est pas une vue active en soit (à ce niveau de mon tutoriel en tout cas...).

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Michael REMY Voir le message
    ... est faîte à partir un layout xml de format Activity
    Je ne comprends pas le sens de la phrase....
    Il n'y aucun rapport entre layout xml et Activity (mis à part le fait qu'une activity a une vue de base généralement générée à partir d'une ressource layout).

    et donc ce dernier n'a pas besoin d'être déclaré car ce n'est pas une vue active en soit (à ce niveau de mon tutoriel en tout cas...).
    Ce dernier quoi ? fichier XML ? mais il est déclaré ! comme ressource de layout...

    "Une Activité" regroupe l'instance d'une classe (qui hérite de Activity directement ou non), quelques filtres et attributs applicatif...
    Sa déclaration/définition se fait *uniquement* dans le manifest, à aucun moment une "Activité" n'est définie par le code java...
    Par contre, le code java définit le support "code" à l'activité par le biais d'une classe qui doit hériter de Activity.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  2. Réponses: 3
    Dernier message: 09/09/2006, 13h24
  3. Réponses: 2
    Dernier message: 02/06/2006, 12h59
  4. [Eclipse] [VE] Créer des menus avec les classes SWT de VE
    Par jbcorens dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 30/08/2005, 12h25
  5. Réponses: 1
    Dernier message: 08/11/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo