Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème tuto android studio

Sujet résolu
    9 avril 2019 à 12:02:20

    Bonjour, 

    Je viens de commencer le tutoriel sur android studio et je suis confronté à un problème. (https://openclassrooms.com/fr/courses/4517166-developpez-votre-premiere-application-android/4590091-gerez-les-actions-de-lutilisateur#/id/r-4590188)

    Lorsque j'ajoute la ligne 

    mPlayButton.setEnabled(fase);

    Mon application ne veut plus s'ouvrir et m'affiche cette erreur :

    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.test, PID: 13894
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setEnabled(boolean)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
            at android.app.ActivityThread.-wrap14(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6776)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setEnabled(boolean)' on a null object reference
            at com.example.test.MainActivity.onCreate(MainActivity.java:24)
            at android.app.Activity.performCreate(Activity.java:6955)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 
            at android.app.ActivityThread.-wrap14(ActivityThread.java) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:154) 
            at android.app.ActivityThread.main(ActivityThread.java:6776) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) 

    Je pense avoir loupé quelque chose mais quoi je ne sais pas voici mon code si ça peut aider :

    package com.example.test;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.TextView;
    import android.widget.EditText;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
        // On utilise des variables qui serviront à raccrocher les widgets au code
        private TextView mGreetingText;
        private EditText mNameInput;
        private Button mPlayButton;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // Ici on raccroche les widgets via leurs ids et on les cast dans le type du widget
            mGreetingText = (TextView) findViewById(R.id.activity_main_greeting_txt);
            mNameInput = (EditText) findViewById(R.id.activity_main_name_input);
            mPlayButton = (Button) findViewById(R.id.activity_main_play_btn);
            mPlayButton.setEnabled(fase);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

    Voila merci d'avance à ceux qui pourront répondre à ma question.

    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2019 à 9:24:05

      Salut,

      Dans la méthode onCreate de ton Activity, tu appelles un peu les éléments dans le désordre. Commence par appeler le super, puis le setContentView et ensuite seulement récupères les références vers tes vues.

      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2019 à 9:44:20

        Tout simplement, et bah merci en tout cas pour ta réponse ça marche niquel !

        Est-ce que tu peux juste m'expliquer à quoi sert la ligne super et contentView si cela ne te dérange pas en général j'aime bien savoir ce que je fais :)

        • Partager sur Facebook
        • Partager sur Twitter
          10 avril 2019 à 11:07:09

          Pour le "super", je t'encourage à reprendre les bases du langage Java et bien comprendre ce qu'est l'héritage.

          Pour le "setContentView", c'est expliqué dans le chapitre "Référencez les éléments graphiques dans votre activité" du cours que tu suis.

          • Partager sur Facebook
          • Partager sur Twitter

          Problème tuto android studio

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown