Atari45 Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 Bonjour, encore moi xD Pas facile d'explication... J'ai une activité qui comporte 3 boutons radios. Dans le code, chaque bouton radio comporte une partie de code afin d'exécuter un calcul mathématique. J'ouvre mon application, j'arrive sur cette activité. Ensuite je clique sur un des boutons radio, ce qui me fais le calcul correctement. Mais lorsque je veux appuyer sur un autre bouton radio, l'application s'arrête alors qu'elle devrait effectuer le calcul... PS: j'ai fais joindre une image de mon activité, je pense que pour comprendre cela sera plus simple... Je pose les bases de mon problème, si vous voulez plus d'info, n'hésitez pas. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
elmarco06 Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 bonjour, il faudrait surtout le logcat qui doit indiquer pour quelle raison l'appli a planté. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Atari45 Posté(e) 19 août 2013 Auteur Share Posté(e) 19 août 2013 Les logCats lorsque je passe du 1er bouton au 2eme bouton : 08-19 12:25:56.566: E/AndroidRuntime(8092): FATAL EXCEPTION: main 08-19 12:25:56.566: E/AndroidRuntime(8092): java.lang.NumberFormatException: Invalid float: "4,50" 08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.StringToReal.invalidReal(StringToReal.java:63) 08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.StringToReal.parseFloat(StringToReal.java:310) 08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.Float.parseFloat(Float.java:300) 08-19 12:25:56.566: E/AndroidRuntime(8092): at com.example.lenssensor.MainActivity$3.onClick(MainActivity.java:147) Je comprend très bien l'erreur mais lorsque je commence par le bouton radio 2 je n'ai pas d'erreur.. C'est quand je change de bouton que cela fais ceci. Pour expliquer l'erreur : Quand je clique sur le premier bouton j'ai les valeurs : Object size : 6 et 4.5 (qui est le fruit de mon calcul) ObjectDistance : 5 (ce que moi je rentre) FocalLength : 2 (que je rentre) VisualAngle : (ce fais par un calcul) En cliquant sur le premier j'obtiens bien 6 et 4.5 mais lorsque je clique sur le 2eme ce logcat apprait... Pour finir la ligne 147 est : float nbObjSizeg = Float.parseFloat(nbObjSize2.getText().toString()); qui correspond au 4.50 voila voila j'espere avoir été clair... :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
elmarco06 Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 je ne sais pas comment tu remplis ton champ nbObjSize mais 4,5 n'est pas un Float. Il faut remplacer la virgule par un point (4,5 doit être 4.5) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Atari45 Posté(e) 19 août 2013 Auteur Share Posté(e) 19 août 2013 le 4.5 est une valeur calculé et il m'affiche un point.. Mai c'est vrai que les logcat mette 4,50.. comment on fais pour changer les virgules en points ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
elmarco06 Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 oui sauf que dans tes logs c'est une virgule. déjà est-ce que ton textfield est typé pour ne recevoir que des numeric ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Atari45 Posté(e) 19 août 2013 Auteur Share Posté(e) 19 août 2013 Oui avec android:inputType="numberDecimal" Lien vers le commentaire Partager sur d’autres sites More sharing options...
elmarco06 Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 bizarre. je n'ai jamais joué avec cela mais j'aurai pensé qu'Android le gèrerait de façon transparente. avant de convertir, le plus simple est donc de faire float nbObjSizeg = Float.parseFloat(nbObjSize2.getText().toString().replaceAll(",", ".")); Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 19 août 2013 Share Posté(e) 19 août 2013 Essaye d'utiliser NumberFormat, c'est fait pour gérer les conversions de nombre en prenant en compte la locale (qui est la cause de ton problème ici, car un nombre est représenté avec une virgule comme séparateur décimal en français, et avec un point en anglais, par ex.) String str = NumberFormat.getInstance().format(monReel);pour la conversion en chaine float monReel = NumberFormat.getInstance().parse(maChaine).floatValue(); pour convertir une chaine en float 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.