2011-09-05 3 views
1

Je fais une application Android en Java .. Et basiquement j'ai un problème .. J'ai un bouton qui supprime le dernier char dans une chaîne .. Et ce bouton sera utilisé beaucoup et si l'utilisateur appuie sur le bouton alors que la chaîne est vide l'application reçoit un message d'erreur et se ferme .. et je veux éviter cela en quelque sorte ..L'application a cessé de fonctionner

ce code actuel est pour le onClickListener ..

back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
       value = value.substring(0, value.length() - 1); 
       numbersArea.setText(value); 
     } 

Toute idée comment je ferais ça ?? Depuis im hors d'idées après avoir essayé tous hier soir.

+0

cochez cette case si (valeur! = Null && value! = "") {Value = value.substring (0, value.length() - 1); numbersArea.setText (valeur); } –

+0

testung pour l'égalité entre les chaînes doit être fait avec des égaux, pas == – njzk2

Répondre

1

Faites votre écoute comme ceci:

back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

       if(!value.equals("") && value != null) { 
        value = value.substring(0, value.length() - 1); 
        numbersArea.setText(value); 
       } 
     } 

Fondamentalement, ce qu'il fait est de vérifier si la chaîne est vide et différente de null, si ce ne est pas, il entre dans la déclaration if.

S'il vous plaît, laissez-moi savoir si vous avez plus de doutes.

Merci.

+0

Aide fantastique! Je l'aime vraiment .. Je triend cette même chose avant mais je viens d'écrire! Value.equals ("") rien d'autre .. – Rakso

+0

TextUtils.isEmpty (valeur) est une façon plus propre de tester pour vide. Votre exemple se bloque, la valeur est nulle ou si value.length == 0 – njzk2

3

Avant substring, assurez-vous que la longueur de la chaîne est> 0.

if (!value.isEmpty()) { 
    value = value.substring(0, value.length() - 1); 
    numbersArea.setText(value); 
} 

Si vous ne faites pas ce contrôle, à un moment donné la chaîne aura une longueur nulle et substring() va jeter IndexOutOfBoundsException.