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 :

Prb IMPORTANT java


Sujet :

Android

  1. #1
    Membre actif
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Points : 204
    Points
    204
    Par défaut Prb IMPORTANT java
    Bonjour a tous,

    J'ai rencontre un prb en faisant un tuto Android, j'ai donc decide de faire un code plus simple pour mieux maitriser.
    Le but de ce code est de calculer l'Indice de Masse Corporel.

    Precision:Eclipse ne renvoit aucune erreur.

    Cependant je rencontrais le mm prb que lorsque je faisais le tuto.

    Alors voici mon code:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
      //
      Button b_calculer=null;
      public void bouton(){
      b_calculer=(Button) findViewById(R.id.bouton_calcul);
      b_calculer.setOnClickListener(calculListener);
      }
      private OnClickListener calculListener = new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              calculIMC();
          }
      };
     
      //
      EditText txtTaille=(EditText)findViewById(R.id.editTxt_taille);
      String txtTailleS=txtTaille.getText().toString();
      double taille=Double.parseDouble(txtTailleS);
      //
      EditText txtPoids=(EditText)findViewById(R.id.editTxt_poids);
      String txtPoidsS=txtPoids.getText().toString();
      double poids=Double.parseDouble(txtPoidsS);
     
      //----Calcul de l'IMC----
      private double calculIMC(){
          double imcV;//V=Valeur
          imcV=poids/(taille*taille);
          return imcV;
      }
    //----FIN:Calcul de l'IMC----
     
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
     
          bouton();
     
          if (savedInstanceState == null) {
              getSupportFragmentManager().beginTransaction()
                      .add(R.id.container, new PlaceholderFragment())
                      .commit();
          }
      }
    Voila le message d'erreur:
    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
    05-19 20:44:40.828: D/AndroidRuntime(278): Shutting down VM
    05-19 20:44:40.848: W/dalvikvm(278): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    05-19 20:44:40.848: E/AndroidRuntime(278): Uncaught handler: thread main exiting due to uncaught exception
    05-19 20:44:40.868: E/AndroidRuntime(278): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.sdz.tuto_appli01/com.sdz.tuto_appli01.MainActivity}: java.lang.NullPointerException
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.os.Handler.dispatchMessage(Handler.java:99)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.os.Looper.loop(Looper.java:123)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread.main(ActivityThread.java:4363)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at java.lang.reflect.Method.invokeNative(Native Method)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at java.lang.reflect.Method.invoke(Method.java:521)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at dalvik.system.NativeStart.main(Native Method)
    05-19 20:44:40.868: E/AndroidRuntime(278): Caused by: java.lang.NullPointerException
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.Activity.findViewById(Activity.java:1612)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at com.sdz.tuto_appli01.MainActivity.<init>(MainActivity.java:33)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at java.lang.Class.newInstanceImpl(Native Method)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at java.lang.Class.newInstance(Class.java:1479)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    05-19 20:44:40.868: E/AndroidRuntime(278):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
    05-19 20:44:40.868: E/AndroidRuntime(278):  ... 11 more
    05-19 20:44:40.888: I/dalvikvm(278): threadid=7: reacting to signal 3
    05-19 20:44:40.888: E/dalvikvm(278): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
    La ligne interresante etant(je pense):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    05-19 20:44:40.868: E/AndroidRuntime(278):  at com.sdz.tuto_appli01.MainActivity.<init>(MainActivity.java:33)
    Il ne fonctionne pas je ne sais vraiment pas pk?Si qq puvais m'aider ce serait vraimt sympa car ce prb me bloque totalemt.

    Merci de votre aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Salut

    Je pense avoir trouvé le problème, tu ne peux pas instancier tes EditText avant le OnCreate. Je m'explique ^^

    Les variables qui sont à l’extérieur des méthodes sont instanciées en premier. Dans ton code, tu indiques que tes EditText pointent sur des EditText présents dans ton fichier XML. SAUF QUE, le "setContentView(..)" qui permet à ton code de savoir ou prendre les EditText est indiqué après leurs instanciations.

    Je te conseille donc cette solution (que je n'ai pas pu tester :/ Mais normalement, elle marche ^^)

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    //
    	  Button b_calculer=null;
    	  public void bouton(){
    	  b_calculer=(Button) findViewById(R.id.action_bar);
    	  b_calculer.setOnClickListener(calculListener);
     
    	  }
    	  private OnClickListener calculListener = new View.OnClickListener() {
    	      @Override
    	      public void onClick(View v) {
    	          calculIMC();
    	      }
    	  };
     
    	  //
    	  EditText txtTaille;
    	  String txtTailleS;
    	  double taille;
    	  //
    	  EditText txtPoids;;
    	  String txtPoidsS;
    	  double poids;
     
    	  //----Calcul de l'IMC----
    	  private double calculIMC(){
    	      double imcV;//V=Valeur
    	      imcV=poids/(taille*taille);
    	      return imcV;
    	  }
    	//----FIN:Calcul de l'IMC----
     
    	  @Override
    	  protected void onCreate(Bundle savedInstanceState) {
    	      super.onCreate(savedInstanceState);
    	      setContentView(R.layout.activity_main);
     
    	      //
    		  txtTaille=(EditText)findViewById(R.id.editTxt_taille);
    		  txtTailleS=txtTaille.getText().toString();
    		  taille=Double.parseDouble(txtTailleS);
    		  //
    		  txtPoids=(EditText)findViewById(R.id.editTxt_poids);
    		  txtPoidsS=txtPoids.getText().toString();
    		  poids=Double.parseDouble(txtPoidsS);
     
    	      bouton();
     
    	      if (savedInstanceState == null) {
    	          getSupportFragmentManager().beginTransaction()
    	                  .add(R.id.container, new PlaceholderFragment())
    	                  .commit();
    	      }
     
    	  }
    En espérant t'avoir été utile.

    Danck

  3. #3
    Expert confirmé
    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
    Points : 4 166
    Points
    4 166
    Par défaut
    Effectivement, l'appel à findViewById() ne peut fonctionner qu'après l'appel à setContentView(). Cet ordre doit être respecté sinon nullPointerExcception !
    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

  4. #4
    Membre actif
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Points : 204
    Points
    204
    Par défaut
    Non,

    Merci a vs les gars,le preb n'est pas la ,j'ai trouve la solution:

    Il fallait mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(R.layout.activity_main);
    Moi j'avais mi mon "xml" ds .C'est pour ca que ca ne marchait pas.
    Tt simplemt

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

Discussions similaires

  1. Reverse Bouml me rajoute un :import java.lang.*;
    Par Pierre8r dans le forum BOUML
    Réponses: 5
    Dernier message: 10/05/2007, 19h03
  2. Importer java.utils.zip ?
    Par Chii-san dans le forum Java ME
    Réponses: 3
    Dernier message: 15/03/2007, 15h01
  3. import java.util.Date et plate-forme java
    Par Mathieu72 dans le forum Langage
    Réponses: 5
    Dernier message: 17/02/2007, 16h51
  4. import java.util.LinkedHashMap non résolu
    Par david06600 dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2006, 13h35
  5. [debutant]import java.swing?
    Par arou dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/02/2006, 12h13

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