2010-04-23 5 views
5

Je suis une recrue à android. Je pense à la mise en œuvre d'une calculatrice simple dans Android pour obtenir les bases dans Android. Je veux afficher un clavier avec des nombres et des opérations mathématiques et quand l'utilisateur appuie sur les touches le numéro correspondant est affiché dans le texte d'édition. J'ai essayé d'utiliser gettext() et mettre à jour le contenu du texte d'édition, mais il montre juste le contenu du bouton appuyé. Aussi comment lire le contenu du bouton afin de faire des opérations mathématiques dans le code? Toute aide serait très appréciée.Android: Comment définir le contenu d'un texte d'édition à partir d'un clic sur un bouton?

salutations,

Primal

Répondre

5

la légende du Traitement du bouton comme les données réelles est quelque chose qui est à peu près que la pratique acceptable lorsque vous faites les boutons chiffres dans une calculatrice, donc je don ne sais pas si cela vaut pour les 'bases de l'androïde';)

Peu importe;

Vous indiquez que vous souhaitez afficher le numéro correspondant lorsque l'utilisateur appuie sur une touche (bouton?). Et puis vous dites getText juste vous montre le contenu du bouton pressé ... N'est-ce pas exactement ce que vous demandez? Vous devrez peut-être fournir un peu de code et nous montrer ce qui ne fonctionne pas comme vous le vouliez. Mais si un bouton a le texte « 8 », et que vous voulez traiter cela comme huit dans les opérations mathématiques, vous devez l'analyser:

Integer myNumber = Integer.parse(myButton.getText()); 

... qui bien sûr lancer une exception si le texte de myButton ne résout pas à un nombre entier.

EDIT, AU COMMENTAIRE

De l'explication de votre problème que vous avez donné à votre commentaire, oui, setText() remet à zéro le texte entièrement à la valeur qu'il est en cours de passé, mais vous pouvez utiliser une combinaison de cela et getText() si vous voulez juste ajouter quelque chose à la valeur actuelle:

myEditText.setText(myEditText.getText() + " " + myButton.getText()); 
+0

Je ne pouvais pas penser à une autre application :(Toutes les suggestions dans cet aspect sont les bienvenues aussi :) getText() me donne ce que je veux. Le problème est que je ne sais pas comment remplir un EditText en l'utilisant. La seule méthode que je connais est setText() et elle actualise le contenu de EditText à chaque clic sur un bouton. – primpap

+0

bien, voir ma mise à jour =) –

6

pour définir le contenu d'un EditText:

EditText text = (EditText) findViewById(R.id.your_text); 
text.setText("Display this text"); 

Au lieu d'essayer de tirer le texte hors de vos boutons et de l'utiliser comme un entier, je voudrais juste ajouter un écouteur de clic à chacun que « connaît » la valeur de son bouton:

Button button = (Button) findViewById(R.id.num_1); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { 
     // Do something with the value of the button 
    } 
}); 
2

Pour Réglez le texte du bouton EditText:

EditText edittext=(EditText)findviewById(R.id.edittext); 
Button num1=(Button)findViewById(R.id.button_num1); 
Button num2=(Button)findviewById(R.id.button_num2); 
num1.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { 
     edittext.append("1"); 
    } 
}); 
num1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     edittext.append("2"); 
    } 
}); 

pour calcultaor simple, voir here il vous aidera à créer une calculatrice dans Android.

+2

Bienvenue dans Stack Overflow! Envisageriez-vous d'ajouter un récit pour expliquer pourquoi ce code fonctionne, et qu'est-ce qui en fait une réponse à la question? Notez, par exemple, comment les autres réponses postées ici expliquent leur code? –

4

Essayez le code suivant.

EditText x = (EditText)findviewbyid(R.id.abc); 

N'utilisez pas x.setText(); Au lieu de cela, utilisez x.append(Your variable or value here). Cela ne supprimera pas le texte provenant du bouton précédent.

+0

'append (" ")' méthode sauvé ma vie! –

Questions connexes