Atari45 Posted August 19, 2013 Share Posted August 19, 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 Link to comment Share on other sites More sharing options...
elmarco06 Posted August 19, 2013 Share Posted August 19, 2013 bonjour, il faudrait surtout le logcat qui doit indiquer pour quelle raison l'appli a planté. Link to comment Share on other sites More sharing options...
Atari45 Posted August 19, 2013 Author Share Posted August 19, 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... :) Link to comment Share on other sites More sharing options...
elmarco06 Posted August 19, 2013 Share Posted August 19, 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) Link to comment Share on other sites More sharing options...
Atari45 Posted August 19, 2013 Author Share Posted August 19, 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 ? Link to comment Share on other sites More sharing options...
elmarco06 Posted August 19, 2013 Share Posted August 19, 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 ? Link to comment Share on other sites More sharing options...
Atari45 Posted August 19, 2013 Author Share Posted August 19, 2013 Oui avec android:inputType="numberDecimal" Link to comment Share on other sites More sharing options...
elmarco06 Posted August 19, 2013 Share Posted August 19, 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(",", ".")); Link to comment Share on other sites More sharing options...
chpil Posted August 19, 2013 Share Posted August 19, 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 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.