frmoul Posté(e) 19 février 2011 Share Posté(e) 19 février 2011 Bonsoir, Je continu le développement d'une application. Je lis un fichier et souhaite inscrire son contenu dans un tableau à 2 dimensions, pour traiter les données ensuite. Ce point provoque des erreurs lorsque je lance "OnClickAffiche". Je vous mets le code de "OnClickAffiche" et le logcat pour montrer les erreurs que ça génère. Avez-vous une idée de ce qui se passe ? Pour info, si j'enlève la ligne "tableau_fichier_data[x][y]=ligne2[y];", l'application n'impose plus une fermeture forcée. public void OnClickAffiche(View view){ String[][] tableau_fichier_data = null; //lecture du fichier et contenu mis dans variable "data" Context lecontext=getBaseContext(); ReadSettings(lecontext); //recopie du fichier sous forme de tableau String[] result = data.split(retour_ligne); for (int x=0; x<result.length; x++){ ligne = result[x]; String[] ligne2 = ligne.split(";"); for (int y=0; y<ligne2.length ; y++){ tableau_fichier_data[x][y]=ligne2[y]; } } } Voici ce que donne le logcat lorsque j'appuie sur le bouton qui appel "OnClickAffiche": 02-19 21:01:43.693: ERROR/AndroidRuntime(220): Uncaught handler: thread main exiting due to uncaught exception 02-19 21:01:43.934: ERROR/AndroidRuntime(220): java.lang.IllegalStateException: Could not execute method of the activity 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.View$1.onClick(View.java:2027) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.View.performClick(View.java:2344) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.View.onTouchEvent(View.java:4133) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.widget.TextView.onTouchEvent(TextView.java:6510) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.View.dispatchTouchEvent(View.java:3672) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.app.Activity.dispatchTouchEvent(Activity.java:1987) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.os.Handler.dispatchMessage(Handler.java:99) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.os.Looper.loop(Looper.java:123) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.app.ActivityThread.main(ActivityThread.java:4203) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at java.lang.reflect.Method.invokeNative(Native Method) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at java.lang.reflect.Method.invoke(Method.java:521) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at dalvik.system.NativeStart.main(Native Method) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): Caused by: java.lang.reflect.InvocationTargetException 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at f.moulin.gestion.elevage.gestion.OnClickAffiche(gestion.java:224) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at java.lang.reflect.Method.invokeNative(Native Method) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at java.lang.reflect.Method.invoke(Method.java:521) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): at android.view.View$1.onClick(View.java:2022) 02-19 21:01:43.934: ERROR/AndroidRuntime(220): ... 21 more 02-19 21:01:43.934: ERROR/AndroidRuntime(220): Caused by: java.lang.NullPointerException 02-19 21:01:43.934: ERROR/AndroidRuntime(220): ... 25 more Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 20 février 2011 Share Posté(e) 20 février 2011 "Caused by: java.lang.NullPointerException" String[][] tableau_fichier_data = null; et elle n'est définie nulle part ailleurs Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 21 février 2011 Auteur Share Posté(e) 21 février 2011 Bonsoir Pierre87, Merci pour ton intervention mais je ne comprends pas ce qu'il faut ajouter pour que ça marche. j'ai cherché des infos sur "java.lang.NullPointerException" sur le net mais étant débutant je n'ai pas tout compris. "elle n'est définie nulle part ailleurs" Que faut-il définir et où ? J'ai écrit tableau = null pour le vider de toute valeur. Si ce n'est pas ce qu'il fallait faire, merci de me le dire. Freddy Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 21 février 2011 Share Posté(e) 21 février 2011 "tableau = null" ne veut pas dire "vider le tableau". La variable "tableau" est une référence sur un objet tableau, que, comme tout objet, il faut instancier. "tableau = null" veut simplement dire que l'on initialise la référence à null, ie. qu'on ne référence aucun objet. Il te faut donc instancier ton tableau, ce que tu pourras faire de cette façon par exemple String[][] tableau_fichier_data = new String[10][10]; Il te faut explicitement indiquer la taille du tableau (ici un tableau de 10x10). En Java, la taille des tableaux est fixe, ils ne sont pas auto-extensibles. Si tu ne connais pas à priori la taille des données que tu vas stocker dans ton tableau, il faut utiliser une autre structure de données (une List, par exemple) Lien vers le commentaire Partager sur d’autres sites More sharing options...
frmoul Posté(e) 22 février 2011 Auteur Share Posté(e) 22 février 2011 Bonsoir, Merci beaucoup pour la réponse. J'avais mal compris la déclaration des tableaux. Ca devrait aller beaucoup mieux ! Freddy "tableau = null" ne veut pas dire "vider le tableau". La variable "tableau" est une référence sur un objet tableau, que, comme tout objet, il faut instancier. "tableau = null" veut simplement dire que l'on initialise la référence à null, ie. qu'on ne référence aucun objet. Il te faut donc instancier ton tableau, ce que tu pourras faire de cette façon par exemple String[][] tableau_fichier_data = new String[10][10]; Il te faut explicitement indiquer la taille du tableau (ici un tableau de 10x10). En Java, la taille des tableaux est fixe, ils ne sont pas auto-extensibles. Si tu ne connais pas à priori la taille des données que tu vas stocker dans ton tableau, il faut utiliser une autre structure de données (une List, par exemple) 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.