frmoul Posted February 19, 2011 Share Posted February 19, 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 Link to comment Share on other sites More sharing options...
Pierre87 Posted February 20, 2011 Share Posted February 20, 2011 "Caused by: java.lang.NullPointerException" String[][] tableau_fichier_data = null; et elle n'est définie nulle part ailleurs Link to comment Share on other sites More sharing options...
frmoul Posted February 21, 2011 Author Share Posted February 21, 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 Link to comment Share on other sites More sharing options...
chpil Posted February 21, 2011 Share Posted February 21, 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) Link to comment Share on other sites More sharing options...
frmoul Posted February 22, 2011 Author Share Posted February 22, 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) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.