Jump to content
Sign in to follow this  
DevAndroid

Probleme avec ListActivity et SharedPreference [Resolu]

Recommended Posts

Salut,

Voila, j'ai un probleme :

package com.enigme.myclasses;

import android.app.Activity;

import android.app.ListActivity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.TableLayout;

import android.widget.Toast;

public class Profil extends ListActivity {

String nom = "Android";

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setListAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_1, mStrings));

getListView().setTextFilterEnabled(true);}

private String[] mStrings = {nom};

Ce code source marche parfaitement mais celui ci plante :

package com.enigme.myclasses;

import android.app.Activity;

import android.app.ListActivity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.TableLayout;

import android.widget.Toast;

public class Profil extends ListActivity {

SharedPreferences util = PreferenceManager.getDefaultSharedPreferences(this);

String nom = util.getString("nom", null);

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setListAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_1, mStrings));

getListView().setTextFilterEnabled(true);}

private String[] mStrings = {nom};

Pourquoi?? J'utilise juste SharedPreference a la place d'une variable String.

Edited by DevAndroid

Share this post


Link to post
Share on other sites

String nom = util.getString("nom", "");

:-p

Tu aurais trouvé ta solution en regardant le LogCat ( outil indispensable) qui t'affichera un nullpointerexception.

En gros, un champs de texte vide et 'null' sont deux choses totalement différentes.

Share this post


Link to post
Share on other sites

Desoler mais la modif ne change rien

Jai pourtant effectuer ta modification

package com.enigme.myclasses;

import android.app.Activity;

import android.app.ListActivity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.TableLayout;

import android.widget.Toast;

public class profil extends ListActivity {

SharedPreferences util = PreferenceManager.getDefaultSharedPreferences(this);

String nom = util.getString("nom", "");

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setListAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_1, mStrings));

getListView().setTextFilterEnabled(true);}

private String[] mStrings = {nom};

}

Edited by DevAndroid

Share this post


Link to post
Share on other sites

Bonjour,

Je n'ai pas encore les automatiques pour voir les erreurs de syntaxe et autre mais si tu pouvais nous poster le contenu du LogCat on en saura plus je pense.

Share this post


Link to post
Share on other sites

peut-être mettre String nom = util.getString("nom", "nimportequoi");

Sinon, je plussoie le logcat, c'est un outil indispensable à tout dev. Ca fait partie d'Eclipse et tu devrais le trouver facilement.

Share this post


Link to post
Share on other sites

Ouais ok

Le probleme cest qu'il n'y a rien dans le LogCat

et jai essaye avec "nimportekoi" meme chose.

Edited by DevAndroid

Share this post


Link to post
Share on other sites

Alors, la comme ça je n'ai pas d'idée.

MAIS, pendant mes heures de debug ces derniers jours, je me suis rendu compte que pour afficher le LogCat sur un de mes problèmes je devait relancer l'application à partir de l'émulateur avec le LogCat derrière (en gros tu clique pour forcer la fermeture et tu vas dans le menu de ton émulateur pour relancer l'application).

Si il y a une erreur il va forcement l'indiquer, sans ces informations je ne vois pas comment t'aider.

Edit : Par contre par curiosité pourquoi voit-on que tes "imports" (?) sont en warning (soulignés en jaune/orange)?

Edited by Bagahe

Share this post


Link to post
Share on other sites

J'ai essayer, sa marche toujours pas , mais il faut pas le configurer le LogCat??

Voila ce que me dit "Console" quand j'affiche le LogCat:

[2010-06-15 12:03:04 - Logcat]device (emulator-5554) request rejected: device not found

java.io.IOException: device (emulator-5554) request rejected: device not found

at com.android.ddmlib.AdbHelper.setDevice(Unknown Source)

at com.android.ddmlib.AdbHelper.executeRemoteCommand(Unknown Source)

at com.android.ddmlib.Device.executeShellCommand(Unknown Source)

at com.android.ddmuilib.logcat.LogPanel$3.run(Unknown Source)

Edit: mes import son en warning parce que je ne les utilisent pas mais sa n'influe pas sur l'application

Edited by DevAndroid

Share this post


Link to post
Share on other sites

Dans le LogCat, les erreurs apparaissent en rouge.

Tu as des filtres au dessus de l'onglet :

Essaye de voir ce qu'il te marque quand tu clique sur "E"

Share this post


Link to post
Share on other sites

C'est bon!! Le LogCat affiche les erreurs :

06-15 12:05:44.160: INFO/ActivityManager(59): Starting activity: Intent { cmp=com.enigme.myclasses/.profil }

06-15 12:05:44.230: DEBUG/AndroidRuntime(299): Shutting down VM}

06-15 12:05:44.230: WARN/dalvikvm(299): threadid=1: thread exiting with uncaught exception (group=0x4001d800)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): FATAL EXCEPTION: main}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.enigme.myclasses/com.enigme.myclasses.profil}: java.lang.NullPointerException}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread.access$2300(ActivityThread.java:125)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.os.Handler.dispatchMessage(Handler.java:99)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.os.Looper.loop(Looper.java:123)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread.main(ActivityThread.java:4627)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at java.lang.reflect.Method.invokeNative(Native Method)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at java.lang.reflect.Method.invoke(Method.java:521)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at dalvik.system.NativeStart.main(Native Method)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): Caused by: java.lang.NullPointerException}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:353)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:348)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at com.enigme.myclasses.profil.(profil.java:11)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at java.lang.Class.newInstanceImpl(Native Method)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at java.lang.Class.newInstance(Class.java:1429)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)}

06-15 12:05:44.250: ERROR/AndroidRuntime(299): ... 11 more}

06-15 12:05:44.270: WARN/ActivityManager(59): Force finishing activity com.enigme.myclasses/.profil

06-15 12:05:44.270: WARN/ActivityManager(59): Force finishing activity com.enigme.myclasses/.main

06-15 12:05:44.770: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{43fc2fb0 com.enigme.myclasses/.profil}

06-15 12:05:55.050: WARN/ActivityManager(59): Activity destroy timeout for HistoryRecord{43fd5398 com.enigme.myclasses/.main}

06-15 12:05:55.070: WARN/ActivityManager(59): Activity destroy timeout for HistoryRecord{43fc2fb0 com.enigme.myclasses/.profil}

Voila

Share this post


Link to post
Share on other sites

Désolé suis au bureau et je croule un peu depuis le début l'après midi :)

Tu as bien un "NullPointerException" dans ton LogCat, tu peux nous poster ton XML avec ?

Parce que pour l'instant je ne vois pas d'erreur flagrante sur ton code, il se peux que ce soit juste un soucis de frappe/identification (j'en ai eu plein :))

Et j'essaye de repasser par ici pas trop tard, mais je ne peux pas te promettre un retour immédiat ;)

Share this post


Link to post
Share on other sites

J'ai juste sa dans mon XML

<?xml version="1.0" encoding="UTF-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:clickable="false" android:background="@drawable/wallpaper">

Sa taiserat a rien je crois

Share this post


Link to post
Share on other sites

SharedPreferences util = PreferenceManager.getDefaultSharedPreferences(this);

je crois pas qu'on puisse faire ça avant le onCreate()

Share this post


Link to post
Share on other sites

quand je dit ça je parle de faire

SharedPreferences util = null;

et dans le onCreate

util = PreferenceManager.getDefaultSharedPreferences(this);

Share this post


Link to post
Share on other sites

Fait un debug avec des breakpoint un peu partout pour voir à quel moment ça te fait un nullpointer, ça limitera déjà les possibilités

Share this post


Link to post
Share on other sites

As-tu bien mis ces 2 lignes après le super.onCreate :

util = PreferenceManager.getDefaultSharedPreferences(this);
String nom = util.getString("nom", "");

Edited by Fluckysan

Share this post


Link to post
Share on other sites

J'ai trouvé Merci!!!! Mille fois merci :D :D

Merci pour la patience de Bagahe

Merci pour les suggestion de eephyne

et Merci pour l'indication qui ma permis de trouver la solution Fluckysan

Merci encore!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...