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 :

[Débutant]Place de setContentView()


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut [Débutant]Place de setContentView()
    Bonjour à tous,

    Je suis en train de lire un livre traitant de la programmation Android (Programmation Android - De la conception au déploiement) donc je découvre petit à petit les bases de cet art. De plus, je ne suis pas un expert du Java même si j'ai de bonnes bases en conception objet.

    J'ai créé une simple activité qui réagit à l'appui sur un bouton, dont le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class MainActivity extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
     
    		setContentView(R.layout.activity_main);
     
    		Button myButton = (Button) findViewById(R.id.myButton);
     
    		myButton.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				Toast.makeText(MainActivity.this, "Vous avez cliqué sur le bouton !", Toast.LENGTH_LONG).show();
    			}
    		});
    	}
     
    }
    Avec bien sûr les import comme il faut. Ma petite question est la suivante : si je place setContentView en fin de programme, celui-ci compile mais ne se lance pas sur l'émulateur, et je n'arrive pas bien à me figurer pourquoi... Quelqu'un pourrait m'éclaircir ce problème ?

    J'ai aussi une petite question annexe : dans le livre je n'ai pour l'instant pas d'explication à propos de l'annotation @Override... Quelqu'un pourrait-il me renseigner sur son utilité ?

    Merci d'avance et bonne soirée !

  2. #2
    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
    Simple question d'ordre : il faut que les objets existent en mémoire avant de les récupérer et les utiliser.

    En effet, la méthode setContentView réalise en réalité un inflate, en partant d'une description xml pour créer automatiquement l’arborescence d'objets correspondants. Les findViewById sont une façon de récupérer les références à ces objets, et donc présupposent que ceux-ci existent. Logique.
    Alors, oui ça compile puisque tout est syntaxiquement correct, mais ca plante à l'exécution pour la raison évidente ci-dessus.

    Quant à l'annotation override elle apporte une aide supplémentaire de la part du compilateur. Pour rappel, avec l'héritage (puisque tu étend Activity) tu peux aussi bien redéfinir (override en anglais) des méthodes de la superclasse ou bien ajouter les tiennes. Il est très aisé de se tromper car la différence ne tient qu'aux signatures des méthodes qui doivent êtres strictement les mêmes dans le cas de la redéfinition. En apposant un @override, tu signifies au compilateur ton intention de redéfinir une méthode héritée, et le compilateur va vérifier pour toi que c'est bien ce que tu as fait.
    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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Merci beaucoup de ta réponse, c'est à la fois très rapide et très clair ! Bonne soirée

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

Discussions similaires

  1. débutante : place du code pour modif affichage
    Par evevev dans le forum IGN API Géoportail
    Réponses: 17
    Dernier message: 02/04/2010, 17h54
  2. [AJAX] Mettre en place un calendrier dynamique
    Par newmar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/05/2008, 16h45
  3. Réponses: 2
    Dernier message: 11/04/2008, 14h59
  4. Débutant : mise en place de templates .
    Par Dworkin3 dans le forum SharePoint
    Réponses: 3
    Dernier message: 07/01/2008, 15h37

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