androniennn Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 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 More sharing options...
Profete162 Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 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 More sharing options...
androniennn Posté(e) 17 mars 2011 Auteur Share Posté(e) 17 mars 2011 Oui, j'ai oublié de mettre context = getApplicationContext(); . Problème résolu ;) :)! Merci Profete162. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.