2013-07-25 3 views
0

Je cherche à faire une application qui convertit une unité à l'autre (disons la monnaie). Donc il se compose de 2 textes d'édition. Un dans lequel l'utilisateur entre la valeur et la seconde qui contient le résultat. Maintenant, ici, au lieu d'avoir un bouton 'convertir' pour mettre la valeur dans le deuxième texte d'édition, je voudrais que la valeur convertie apparaisse dans le deuxième texte d'édition COMME J'AI ENTRER DES VALEURS DANS LE PREMIER. Comment puis-je atteindre cet objectif? MerciAndroid comment changer le contenu d'edittext en temps réel

Répondre

0

Utilisez un TextWatcher pour cela. Réglez-le sur la EditText que les types d'utilisateur dans:

myEditText1.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable s) { 
         String value = s.toString(); 

         // Perform computations using this string 
         // For example: parse the value to an Integer and use this value 

         // Set the computed value to the other EditText 
         myEditText2.setText(computedValue); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(final CharSequence s, int start, int before, int count) {    

     } 

    }); 

Edit 1:

Vérifier chaîne vide "":

myEditText1.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void afterTextChanged(Editable s) { 
     String value = s.toString(); 

     if (value.equals("")) { 
      myEditText1.setText("0"); 

      // You may not need this line, because "myEditText1.setText("0")" will 
      // trigger this method again and go to else block, where, if your code is set up 
      // correctly, myEditText2 will get the value 0. So, try without the next line 
      // and if it doesn't work, put it back. 
      myEditText2.setText("0"); 
     } else { 

      // Perform computations using this string 
      // For example: parse the value to an Integer and use this value 

      // Set the computed value to the other EditText 
      myEditText2.setText(computedValue); 
     } 
} 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(final CharSequence s, int start, int before, int count){    

    } 

}); 
+0

oui cela fonctionne. mais par exemple j'entre la valeur en dollar à convertir en roupie comme 23. il donne la sortie correcte. alors si j'appuie sur le bouton de retour pour le changer pour enlever d'abord '3'. alors finalement si j'essaye d'enlever '2' aussi, alors il se bloque. Je voudrais qu'il change à 0 dollar et 0 roupie si je vide le premier edittext. Comment je fais ça? –

+0

Oui, cela se produit parce que 'onTextChanged (CharSequence, int, int, int)' est déclenché chaque fois que le texte dans 'myEditText1' change. Vous devez vérifier la chaîne vide '" "'. Voir ** Modifier 1 ** ci-dessus. – Vikram

+0

@ShivamBhalla Vous obtenez probablement une 'NumberFormatException'. ** Modifier 1 ** ci-dessus devrait résoudre votre problème. – Vikram