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
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Août 2015
    Messages : 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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 63
    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 chevronné 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 : 30
    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
    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);

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

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

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

    Grand merci à vous.:

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    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