Problème création d'application android

Fermé
nachding Messages postés 26 Date d'inscription dimanche 11 décembre 2011 Statut Membre Dernière intervention 13 mai 2016 - Modifié par KX le 11/10/2014 à 13:25
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 11 oct. 2014 à 13:34
Bonjour, :D

Je suis depuis quelques semaines le cours "créez vos application android" de Openclassroom est j'ai un problème pour le TP qui consiste à créer une application : Calculez votre IMC. Lorsque que je clique sur le bouton calculer, l'application quitte inopinément :( Voici mon code Java :
package com.zestedesavoir.mapremiereapplication;
 
 
 
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
 
 
 
public class MainActivity extends Activity{
     
    private final String defaut = "Veuillez cliquer sur le bouton "Calculer IMC" pour calculer votre IMC";
     
        Button calculer = null;
        Button raz = null;
         
        EditText poids = null;
        EditText taille = null;
         
        RadioGroup group = null;
         
        TextView result = null;
         
     
     
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        calculer = (Button)findViewById(R.id.button1);
        raz = (Button)findViewById(R.id.button2);
         
        poids = (EditText)findViewById(R.id.editText1);
        taille = (EditText)findViewById(R.id.editText2);
         
        group = (RadioGroup)findViewById(R.id.radioGroup);
         
        result=(TextView)findViewById(R.id.textView4);
         
        calculer.setOnClickListener(clickListener);
        poids.addTextChangedListener(textWatcher);
        taille.addTextChangedListener(textWatcher);
        raz.setOnClickListener(onClickRaz);
        }
 
private TextWatcher textWatcher = new TextWatcher() {
 
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
      result.setText(defaut);
    }
         
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
      int after) {
   
    }
   
    @Override
    public void afterTextChanged(Editable s) {
   
    }
  };
   
   
  private OnClickListener clickListener = new OnClickListener()
{
 
    @Override
    public void onClick(View v) {
         
                String t = taille.getText().toString();
                String p = poids.getText().toString();
         
                float pValue = Float.valueOf(p);
                float tValue = Float.valueOf(t);
                 
             
             
            if(group.getCheckedRadioButtonId()==R.id.radioButton1)
            {
                tValue = tValue/100;
            }
             
            tValue = (float)Math.pow(tValue, 2);
            float imc = 0;
             
                imc = pValue/tValue;
             
            result.setText("Votre IMC est de : "+String.valueOf(imc));
            }
             
     
     
};
 
 
    private OnClickListener onClickRaz = new OnClickListener()
    {
 
        @Override
        public void onClick(View v) {
             
            poids.getText().clear();
            taille.getText().clear();
            result.setText(defaut);
             
        }
         
    };
 
     
}


Voici mon logcat :
10-10 20:51:53.943: E/AndroidRuntime(709): FATAL EXCEPTION: main
10-10 20:51:53.943: E/AndroidRuntime(709): java.lang.NullPointerException
10-10 20:51:53.943: E/AndroidRuntime(709): at com.zestedesavoir.mapremiereapplication.MainActivity$2.onClick(MainActivity.java:94)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.view.View.performClick(View.java:3480)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.view.View$PerformClick.run(View.java:13983)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.os.Handler.handleCallback(Handler.java:605)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.os.Handler.dispatchMessage(Handler.java:92)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.os.Looper.loop(Looper.java:137)
10-10 20:51:53.943: E/AndroidRuntime(709): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-10 20:51:53.943: E/AndroidRuntime(709): at java.lang.reflect.Method.invokeNative(Native Method)
10-10 20:51:53.943: E/AndroidRuntime(709): at java.lang.reflect.Method.invoke(Method.java:511)
10-10 20:51:53.943: E/AndroidRuntime(709): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-10 20:51:53.943: E/AndroidRuntime(709): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-10 20:51:53.943: E/AndroidRuntime(709): at dalvik.system.NativeStart.main(Native Method)
10-10 20:51:55.579: I/Process(709): Sending signal. PID: 709 SIG: 9


Merci d'avance !
A voir également:

1 réponse

KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
11 oct. 2014 à 13:34
Bonjour,

Il faut absolument apprendre à lire une exception, tu en auras très souvent et tu dois savoir comment les corriger sans passer par un forum à chaque fois.

java.lang.NullPointerException
at com.zestedesavoir.mapremiereapplication.MainActivity$2.onClick(MainActivity.java:94)

Déjà, si tu ne sais pas ce qu'est un NullPointerException, tu vas lire sa documentation :
https://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html

Ensuite, tu retrouves la ligne de code concerné, donc ligne 94 de MainActivity :
if(group.getCheckedRadioButtonId()==R.id.radioButton1)

Ici il n'y a que
group
qui pourrai provoquer un NPE, cela signifie que
group==null
.
À toi maintenant de corriger le code de manière à ne jamais utiliser ton appel
group.getCheckedRadioButtonId()
lorsque tu as
group==null
.
0