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 :

accéder à mes éléments graphiques en dehors de OnCreate()


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut accéder à mes éléments graphiques en dehors de OnCreate()
    Voila, j'ai un problème de débutant : impossible d'accèder à mes Button en dehors de la procédure OnCreate() :
    les fonctions SetTexte fonctionnent uniquement dans mon OnCreate(), et en dehors plante mon App:

    merci de votre aide.


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package com.moi.orous.mon_suivi_de_visite;
     
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
     
     
    public class Activity_ecran1 extends AppCompatActivity {
        public Button testButton1;
        public Button testButton2;
        @Override
     
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ecran1);
            Button testButton1 = (Button) findViewById(R.id.button1);
            Button testButton2 = (Button) findViewById(R.id.button2);
     
            testButton1.setText("Ca Marche");
        }
     
     
        // Quand on clic sur le Boutton2 :
        public void Button2testClicked(View v) {
            testButton2.setText("Ca NE Marche PAS");   // Plante mon App
        }
     
    }

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 63
    Points : 96
    Points
    96
    Par défaut
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    package com.moi.orous.mon_suivi_de_visite;
     
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
     
     
    public class Activity_ecran1 extends AppCompatActivity {
        public Button testButton1;
        public Button testButton2;
        @Override
     
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ecran1);
            testButton1 = (Button) findViewById(R.id.button1);
            testButton2 = (Button) findViewById(R.id.button2);
     
            testButton1.setText("Ca Marche");
            Button2testClicked();
        }
     
     
        // Quand on clic sur le Boutton2 :
        public void Button2testClicked() {
            testButton2.setText("Ca Marche 2");   // Plante mon App
        }
     
    }

  3. #3
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut

    Ton problème est que tu défini des instances de Button dans ta fonction onCreate() : ligne 17 : Button testButton1 = (Button) findViewById(R.id.button1);.
    Cette instance que tu viens de creer n'existe donc qu'au sein de ta fonction onCreate().

    Une fois en dehors quand tu appelles testButton1 tu fais alors appel à l'instance crée en attribut de classe : ligne 10 : private Button testButton1;.
    Cette instance n'a jamais été initialisé et est donc null.

    Pour corriger cela, il ne faut pas redéfinir d'instances dans ta fonction onCreate(), mais juste initialiser celle déjà existante : Comme corrigé par Kamenber ligne 18 : testButton1 = (Button) findViewById(R.id.button1);
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Merci
    vous êtes super top !!!

    Grand merci à vous.:

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    En théorie, si tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        public void Button2testClicked(View v) {}
    ca signifie que tu as un onClick="Button2testClicked" dans ton layout. Et la vue en paramètre (View v) référence donc ton boutton. Du coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void Button2testClicked(View v) {
           ((Button)v).setText("Youpi");  
        }
    devrait fonctionner sans que tu ais besoin d'implémenter tes boutons avant.

Discussions similaires

  1. [JDOM] Accéder à mes éléments xml
    Par greg08 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/11/2008, 15h59
  2. Accéder à "Mes documents"
    Par Apo007 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/01/2006, 12h22
  3. [WebForms][2.0]Accéder aux élément DropDownlist via Javascript
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/10/2005, 15h01
  4. Est-il possible d'accéder à un élément grâce à sa position ?
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 21
    Dernier message: 30/09/2005, 08h18
  5. [debutant] [TOMCAT] Accéder à mes pages depuis internet
    Par Amnesiak dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 27/05/2005, 16h08

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