Probleme avec un tableau structuré - Java - Programmation
Marsh Posté le 30-07-2010 à 09:44:00
Sans le message d'erreur ça va être dur de te dire d'où ça vient.
Mais il y a quand même de grandes chances que tu ais un NullPointerException qui serait dû au fait que tu n'aies pas initialisé siteinfo.
Donc si j'ai raison, soit siteinfo est null, soit il est vide, soit la valeur à l'indice 0 est null
Marsh Posté le 30-07-2010 à 12:56:54
La ligne 22 : public typesite siteinfo[];
elle est placée dans une autre classe ? Autrement dit siteinfo c'est un membre d'une autre classe ?
Utilise des ArrayList plutôt que des tableaux ça sera sans doute plus pratique.
Marsh Posté le 02-08-2010 à 10:04:40
Bin en fait lors de la compilation il n'y a pas d'erreur (ou alors y'a une log avec un warning que j'ai pas vu). C'est lors de l'execution du programme que celui ci plante.
Sinon oui, la ligne 22 est dans une autre classe. ça viendrait de la le souci ?
Pour les Arraylist je connais pas mais est ce que je peux faire un ArrayList de ma classe (pour garder ma structure)
Un truc du genre
Code :
|
Est ce que c'est correct ce genre de truc ou bien ce n'est pas comme ça qu'on emploi cette instruction ?
Marsh Posté le 02-08-2010 à 10:28:58
Oula non ça va pas.
Déjà mets une majuscule à typesite car c'est une classe et en Java on en met aux classes.
Code :
|
Marsh Posté le 02-08-2010 à 11:24:02
Ok je commence a comprendre un peu mieux le principe des ArrayList. Merci
Bon par contre mon programme plante toujours
Je pense que ça viens de l'instruction pour récupérer les données du tableau
Je vous met mon code si ça peut vous aider :
Code :
|
Quand je met les valeurs en dur dans mon tableau sitename, ça fonctionne bien, j'ai bien un resultat affiché a l'ecran, mais par contre le fait de récuéprer les valeurs dans arrList me fait planter le programme.
Y'a pas une histoire comme quoi faut initialiser le ArrayList ? C'est peut etre pour ça que ça plante ?
Marsh Posté le 02-08-2010 à 11:30:49
Faut l'initialiser dans le constructeur ou dans ta fonction.
Mais si c'était mal initialisé ça planterait au add.
En plus c'est faux ce que tu fais. En fait tu ajoutes le même siteinfo dans ta liste. Dans la liste ça prend la référence de l'objet si je dis pas de bêtise. Donc t'auras 2 fois les valeurs avec GMAIL.
Pourquoi au lieu de feedit tu ne fais pas ça dans le constructeur de Typesite ? Et tu fais new à chaque fois.
Marsh Posté le 02-08-2010 à 11:52:14
Effectivement passer l'affectation au constructeur simplifiera grandement
J'ai donc supprimé la fonction feedit et j'ai passé les instructions au constructeur de la classe Typesite
J'ai egalement créer une fonction getname() qui renvoi la valeur String de la zone sitename de cette meme classe. (vu que j'avais déclaré cette zone en private, je suis pas sur de pouvoir y acceder directement)
Du coup pour alimenter mon tableau je passe les instructions suivantes :
Code :
|
Ensuite pour récupérer les valeurs je fais :
Code :
|
C'est censé me récupérer la première "ligne" de mon tableau dans ma structure siteinfo
Jusque la tout va bien.
Apres je tente de récupérer la valeur du champ sitename de cette première ligne :
Code :
|
Et la, bien qu'a la compilation aucune erreur ne soit detectée, le programme plante a l'execution.
Je pense que la le probleme se situe plus dans l'affectation de valeur.
En c je faisais un strcpy pour copier un champ String dans un autre et la j'ai l'impression qu'il faut faire la meme chose. Je vais chercher si une instruction similaire existe (en tout cas strcpy n'existe pas) mais a mon avis c'est ça.
Si jamais vous avez la reponse avant moi ou bien si je me gourre totalement dites le moi
Marsh Posté le 02-08-2010 à 12:02:09
C'est juste que tu n'initialises pas sitename
Code :
|
Marsh Posté le 02-08-2010 à 12:08:13
Pourquoi ne pas utiliser également une ArrayList pour sitename ? Et est-ce que c'est pas redondant avec la liste arrList ?
Marsh Posté le 02-08-2010 à 14:04:38
bon apres plusieurs essais infructeux avec mon tableau de String j'ai fait comme tu m'as dit j'ai transformé mon tableau de String sitename en ArrayList
Code :
|
Du coup je l'ai initialisé en debut de la classe principale :
Code :
|
Ensuite, apres avoir alimenté mon tableau siteinfo avec toutes mes informations, j'ai fait une boucle pour récupérer juste la zone siteinfo.sitename et l'insérer dans mon nouveau ArrayList
Code :
|
Le test est concluant, ce coup ci je ne fais plus planter l'emulateur
Merci a tous pour votre aide
Marsh Posté le 29-07-2010 à 18:21:28
Hello, je debute le dev sous Android et je debute egalement sous Java (je cumule) et du coup, je rencontre quelques difficultés avec le code suivant :
Ensuite dans ma classe principale je veux alimenter mon tableau en utilisant la méthode ma classe
Aucune erreur de syntax detectée dans Eclipse, sauf que lors de l'execution, l'emulateur android detecte une erreur.
Et quand je met la ligne du dessus en commentaire, la ça passe, le programme se charge bien.
Vous avez une idée d'ou ça peut venir ?
J'avoue que le java change un peu du C++ et je suis un peu perdu.
Merci d'avance