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

Composants graphiques Android Discussion :

erreur lors d'affichage des adresse dans un spinner


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juillet 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juillet 2010
    Messages : 164
    Points : 71
    Points
    71
    Par défaut erreur lors d'affichage des adresse dans un spinner
    Bonjour,
    Je veux afficher la liste des emails de mes contacts dans un spinner.
    Mais lors de l’exécution, lorsque je clique sur le spinner j'obtiens un erreur d'exécution.
    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
     
     public String[] emails(){ 
            	ContentResolver cr = getContentResolver();
            	Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    	        	if (cur.getCount() > 0)
    	        	{
    		            	  while (cur.moveToNext())
    		            	  {
    		            	    String id = cur.getString(
    		            	                      cur.getColumnIndex(ContactsContract.Contacts._ID));
    		            	    Cursor pCur = cr.query(
    		            	          ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
    		            	          null, 
    		            	          ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = ?", 
    		            	          new String[]{id}, null);
     
     
    			            	    while (pCur.moveToNext())
    			            	    {
    			            	        String email = pCur.getString(
    			            	            pCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
    			            	        // your email handling code would go in here
     
     
    			            	        adresse[i]=email;
    			               	        i++;
     
    			            	    } 
    		            	    pCur.close();
    		            	  }
     
    	        	}
            	return adresse;
    L'appel de cette méthode pour afficher ces adresses dans un spinner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayAdapter ad=new ArrayAdapter(this,android.R.layout.simple_spinner_item,emails());
    	        ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	        Spinner spin=(Spinner)findViewById(R.id.spinner);
    	        spin.setAdapter(ad);


    L'erreur dans le logCat
    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
    05-05 13:12:14.391: ERROR/AndroidRuntime(354): Uncaught handler: thread main exiting due to uncaught exception
    05-05 13:12:14.421: ERROR/AndroidRuntime(354): java.lang.NullPointerException
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:376)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:325)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:321)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.AbsListView.obtainView(AbsListView.java:1256)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1147)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.ListView.onMeasure(ListView.java:1060)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.View.measure(View.java:7964)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.View.measure(View.java:7964)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.View.measure(View.java:7964)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.View.measure(View.java:7964)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.View.measure(View.java:7964)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.os.Looper.loop(Looper.java:123)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    05-05 13:12:14.421: ERROR/AndroidRuntime(354):     at dalvik.system.NativeStart.main(Native Method)
    Merci de m'aider à résoudre mon problème

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Tu as un objet null quelque part et qui correspondrait à la création de l'objet ad .

    05-05 13:12:14.421: ERROR/AndroidRuntime(354): java.lang.NullPointerException
    Alors que te renvoies la procédure emails() et où est cette méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayAdapter ad=new ArrayAdapter(this,android.R.layout.simple_spinner_item,emails());
    	        ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	        Spinner spin=(Spinner)findViewById(R.id.spinner);
    	        spin.setAdapter(ad);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Alors que te renvoies la procédure emails() et où est cette méthode
    Elle est écrite au dessus et renvoie un String[], mais effectivement la variable retournée "adresse" n'est pas initialisée (du moins dans la fonction), ni le i de l'incrémentation...

  4. #4
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juillet 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juillet 2010
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    La première partie de code concerne la méthode emails() qui retourne String[]

  5. #5
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Désolé je me suis mal exprimé .

    Je demandais ou étais la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayAdapter ad=new ArrayAdapter(this,android.R.layout.simple_spinner_item,emails());
    	        ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	        Spinner spin=(Spinner)findViewById(R.id.spinner);
    	        spin.setAdapter(ad);
    En gros est ce qu'elle est bien dans l'UIThread ?

    et sur que te renvoies la méthode emails(), je voulais savoir réellement ce qu'elle te renvoyais comme contenu, pour cela il faut que tu log ou débogue ton application.

    Par contre je n'avais pas regardé la méthode emails . Mais pourquoi remplir une variable membre de ta classe pour ensuite la retourner ?

  6. #6
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juillet 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juillet 2010
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Elle est écrite au dessus et renvoie un String[], mais effectivement la variable retournée "adresse" n'est pas initialisée (du moins dans la fonction), ni le i de l'incrémentation...
    Voici l'initialisation j'ai déjà fait dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i=0;
    final String [] adresse=new String[100];
    et sur que te renvoies la méthode emails(), je voulais savoir réellement ce qu'elle te renvoyais comme contenu, pour cela il faut que tu log ou débogue ton application.
    renvoie un tableau de String qui contient les émails

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Salut,

    Ta méthode email() retourne un tableau qui contient surement des valeurs null vu ton initialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final String [] adresse=new String[100]; 
    //je suppose que ta méthode emails() n'initialise pas toutes les 100 colonnes de ton tableaux.
    Dans ce cas je te conseille de faire l'initialisation du tableau dans ta fonction emails() en fixant sa taille à celle de ton curseur.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2014, 16h14
  2. [SP-2010] Erreur d'affichage des documents dans le navigateur Office Web Apps
    Par Jean-Claude Dusse dans le forum SharePoint
    Réponses: 0
    Dernier message: 23/09/2011, 18h37
  3. Réponses: 9
    Dernier message: 21/09/2011, 15h48
  4. erreur lors de l'affichage des résultat dans des fichier
    Par bouabid_hanen dans le forum Fortran
    Réponses: 3
    Dernier message: 19/11/2010, 09h34
  5. Réponses: 2
    Dernier message: 21/05/2006, 14h02

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