Aller au contenu

FC avec un bouton=> logcat[Résolu]


androniennn

Recommended Posts

Bonsoir,

Je veux sauvegarder dans un fichier un ensemble de données au moment où je tape sur un bouton, 20% ça marche, 80% ForceClose, Voici le log logcat:

03-16 20:52:59.080: ERROR/AndroidRuntime(1019): FATAL EXCEPTION: main
03-16 20:52:59.080: ERROR/AndroidRuntime(1019): java.lang.NullPointerException
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:353)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:348)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at carburant.android.com.carburant$1.onClick(carburant.java:118)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.view.View.performClick(View.java:2485)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.view.View$PerformClick.run(View.java:9080)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.os.Handler.handleCallback(Handler.java:587)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.os.Looper.loop(Looper.java:123)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at java.lang.reflect.Method.invoke(Method.java:507)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-16 20:52:59.080: ERROR/AndroidRuntime(1019):     at dalvik.system.NativeStart.main(Native Method)
03-16 20:52:59.080: WARN/ActivityManager(68):   Force finishing activity carburant.android.com/.carburant
03-16 20:52:59.854: WARN/ActivityManager(68): Activity pause timeout for HistoryRecord{406e89b8 carburant.android.com/.carburant}

En fait, j'ai pas bien compris exactement la cause du FC, une erreur dans les SharedPreferences ?

Voici l'extrait du code:

final Button button = (Button) findViewById(R.id.button);

 button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
    String value1 = vol.getText().toString();
    String value2 = kil.getText().toString();


                        if (value1 != null && value1.trim().length() > 0 && value2 != null && value2.trim().length() > 0)
                        {
                                float q1=Float.parseFloat(vol.getText().toString());
                                float q2=Float.parseFloat(kil.getText().toString());
                                float x=((q1 / q2)* 100);
                                String y= Float.toString(x);
                                cons.setText(y);

                                SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
                				 date = format.format(new Date());
                				 data = date + " : " + y + " L/100km\n" + value1 + " litres "+ value2 + " km\n";
                				 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
         if (data != "" ) {
         String fileName = getResources().getString(R.string.fileName);
         String fileDir = ""+ preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
         myIO.WriteSettings(context, fileDir + fileName, data);
         data = "";
               					}

                        }
                        else 
                        {
                        Toast.makeText(carburant.this, "Veuillez vérifier les deux champs", Toast.LENGTH_LONG).show();
                        }
        }
  });

Merci de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

C'est laquelle la ligne 118 de ton code? :-D

Je suppose que c'est celle ci: String fileDir = ""+ preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";

Comme c'est un nullpointerexception, je suppose que PreferenceManager.getDefaultSharedPreferences(context) renvoie null quelques lignes plus haut...

Est ce que ton context est bien initialisé?

Sinon, il existe getApplicationContext() qui fonctionne pas mal (ou j'ai récemment trouvé getUIContext(), mais je sais pas trop sur lequel se baser)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...