Jump to content

Archived

This topic is now archived and is closed to further replies.

androniennn

Je tape sur le bouton, rien ne se passe[Résolu]

Recommended Posts

Bonsoir,

Je ne sais pas pourquoi le résultat ne s'affiche pas dans le champ texte(cons) lors du tape sur le bouton, voici le code:

public void calcul ()
{
  final EditText vol;
  final EditText kil;
  final EditText cons;

  vol = (EditText) findViewById(R.id.volume2);
  kil= (EditText) findViewById(R.id.kilometrage2);
  cons= (EditText) findViewById(R.id.consom);

final Button button = (Button) findViewById(R.id.button);

     button.setOnClickListener(new View.OnClickListener() {
   	  	public void onClick(View v) {
   	  		int q1=Integer.parseInt(vol.getText().toString());
   	  		int q2=Integer.parseInt(kil.getText().toString());
   	  		int x;
   	  	  	x=q1 + q2;
   	  		cons.setText(x);
       	  }
     });
     }

C'est quoi le problème exactement ?

Share this post


Link to post
Share on other sites
Vraiment j'ai essayé TOUT :( et rien n'y fait !

Non, tu n'as pas essayé la BONNE solution ;)

Le problème est que la méthode setText(int) est à utiliser lorsqu'on veut affecter un texte au TextView à partir d'une ressource <string> déclarée dans un fichier externe. Dans ton cas, ce que tu veux, c'est afficher une valeur textuelle représentant ton entier. Il faut donc que tu convertisses ton entier en une chaine, pour pouvoir utiliser la méthode setText(CharSequence)

Ceci devrait fonctionner

 ...
 cons.setText(Integer.toString(x));
 ...

déclare tes EditText et ton Button en global

Inutile. Et pas une pratique à conseiller

(son code compile, référencer une variable locale d'une méthode depuis une anonymous-inner-class déclarée dans la méthode est tout à fait valide (à la contrainte près que ces variables doivent être 'final'))

Share this post


Link to post
Share on other sites

Chpil ;(, j'ai utilisé cette fonction là est toujours rien, je vous passe tout le code:

package carburant.android.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class carburant extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

   }

public void calcul ()
{
  final EditText vol;
  final EditText kil;
  final EditText cons;

  vol = (EditText) findViewById(R.id.volume2);
  kil= (EditText) findViewById(R.id.kilometrage2);
  cons= (EditText) findViewById(R.id.consom);

final Button button = (Button) findViewById(R.id.button);

     button.setOnClickListener(new View.OnClickListener() {
   	  	public void onClick(View v) {
   	  		int q1=0;
   	  		int q2=0;

   	  		q1=Integer.parseInt(vol.getText().toString());
   	  		q2=Integer.parseInt(kil.getText().toString());
   	  		int x;
   	  	  	x=q1 + q2;
   	  	  cons.setText(Integer.toString(x));
       	  }
     });
     }
}

Dois-je ajouter

calcul();

juste après

setContentView(R.layout.main);

(j'ai essayé mais j'ai un FC)!

:emo_im_lips_are_sealed: :emo_im_foot_in_mouth: :emo_im_undecided:

Share this post


Link to post
Share on other sites

Ah ben, forcément, si tu n'appelles pas calcul(), ça ne risque pas de marcher...

Et si quand tu l'appelles, tu as un FC, regarde dans les logs les traces de l'exception qui se produit, ça t'indiquera ton problème...

Share this post


Link to post
Share on other sites

Mais d'où vient ce problème? Une erreur sur tous les R (R cannot be resolved to a variable)!

J'ai fais un import android.R mais le problème se déplace vers le main(setContentView(R.layout.main);) et les champs texte(cannot be resolved or is not a field)!

Étrange !

Share this post


Link to post
Share on other sites

N'importe pas android.R.

Vérifie de bien avoir défini dans ton xml tes id tel que:

android:id="@+id/volume2"

Share this post


Link to post
Share on other sites

N'importe pas android.R.

Vérifie de bien avoir défini dans ton xml tes id tel que:

android:id="@+id/volume2"

Oui, tout est bien défini, en fait le problème est apparu lorsque j'ai fais un "clean" du project :\ !

Share this post


Link to post
Share on other sites

ok, essaye de supprimer le dossier /gen et refais un clean. J'ai déjà eu ce problème aussi.

Share this post


Link to post
Share on other sites

ok, essaye de supprimer le dossier /gen et refais un clean. J'ai déjà eu ce problème aussi.

Je ne sais pas comment, mais ça marche maintenant :\ :D !

De plus, le code fait parfaitement maintenant le calcul des 2 champs et il affecte le résultat au champ résultat.

Merci à vous et à chpil :) .

Je vais débuter maintenant l'autre phase qui consiste à ce sujet, si vous pouvez aidez moi à résoudre le problème :).

Merci à vous.

Share this post


Link to post
Share on other sites

Petit problème:

Lorsque j'ajoute des valeurs "float" genre avec virgule (15.15 par exemple) je reçois un FC au moment où je tape sur le bouton Calculer!

Pour les EditText j'ai fais cela:

android:numeric="integer|decimal|signed"

C'est quoi le problème :emo_im_undecided:

Share this post


Link to post
Share on other sites

J'ai changé tout en float(à la place de int) et ça

cons.setText(Float.toString(x));

=> toujours ForceClose :( !

Je re-vérifie :emo_im_undecided:

Je crois que c'est pas Float mais c'est Double, Il faut faire ça aussi

q1=Double.parseDouble(vol.getText().toString());

En mode wait de la simulation...

Share this post


Link to post
Share on other sites

Résolu ;) !

En conclusion, d'après ce que j'ai lu, Float et Double c'est la même chose juste que Double est plus large(prend 8 octets devant les 4 octets de Float) à cause d'un vaste affichage après la virgule!

Bref, l'application est 100% fonctionnelle maintenant! Reste à suivre le chemin en faisant cela

Share this post


Link to post
Share on other sites

Encore un petit problème: je voudrais afficher un toast lorsqu'au moins un champ est vide:

button.setOnClickListener(new View.OnClickListener() {
   	  	public void onClick(View v) {
   	  		float q1;
   	  		float q2;
   	  		q1=Float.parseFloat(vol.getText().toString());
   	  		q2=Float.parseFloat(kil.getText().toString());
   	  		Float x;


   	  		if(TextUtils.isEmpty(vol.getText()))  { 
         	  		Toast.makeText(carburant.this, "Veuillez saisir le 1er champs", Toast.LENGTH_SHORT).show();
         	  	}
   	  		else if (TextUtils.isEmpty(kil.getText()))  { 
             	  		Toast.makeText(carburant.this, "Veuillez saisir le 2ème champs", Toast.LENGTH_SHORT).show();

             	  	}
   	  		else
   	  		{
   	  			x=((q1 / q2)* 100);
   	  			 cons.setText(Float.toString(x));
   	  		}
   	  	}
     });

ForceCLose lorsque je tape sur calculer(2 champs vides!).

Une idée du problème ?

Share this post


Link to post
Share on other sites

J'ai essayé aussi ça:

button.setOnClickListener(new View.OnClickListener() {
   	  	public void onClick(View v) {
           float q1=Float.parseFloat(vol.getText().toString());
           float q2=Float.parseFloat(kil.getText().toString());
           String value1 = vol.getText().toString();
           String value2 = kil.getText().toString();
       	  		if (value1 != null && value1.trim().length() > 0 && value2 != null && value2.trim().length() > 0)
       	  		{
       	  			float x=((q1 / q2)* 100);
      	  			 	cons.setText(Float.toString(x));
       	  		}
       	  		else 
       	  		{
       	  		Toast.makeText(carburant.this, "Veuillez saisir le 1er champs", Toast.LENGTH_SHORT).show();
       	  		}
   	  	}
         });

Toujours FC lorsque les EditText sont vides :(!

Share this post


Link to post
Share on other sites

As-tu regardé dans le logcat la trace de l'exception qui se produit ??? Quelle est l'exception ? La ligne dans le code où elle se produit ?

Ceci-dit, je parierai bien que l'erreur se produit sur le parseFloat, vu que tu fais la conversion vers float de la chaine issue du TextView, avant de tester si le contenu du TextView est vide...

Si tu faisais cela dans le bon ordre, ça irait peut être mieux

button.setOnClickListener(new View.OnClickListener() {
               public void onClick(View v) {
           String value1 = vol.getText().toString();
           String value2 = kil.getText().toString();
                               if (value1 != null && value1.trim().length() > 0 && value2 != null && value2.trim().length() > 0)
                               {
                                       float q1=Float.parseFloat(vol.getText().toString());
                                       float q2=Float.parseFloat(kil.getText().toString());
                                       float x=((q1 / q2)* 100);
                                       cons.setText(Float.toString(x));
                               }
                               else 
                               {
                               Toast.makeText(carburant.this, "Veuillez saisir le 1er champs", Toast.LENGTH_SHORT).show();
                               }
               }
         });

Share this post


Link to post
Share on other sites

chpil, vous êtes le meilleur!!! ça marche parfaitement maintenant :)! Merci infiniment !

Maintenant, je passe à autre chose=> la sauvegarde ;)!

Share this post


Link to post
Share on other sites





×
×
  • Create New...