2017-08-25 3 views
0

Je suis en train de faire une validation, où j'ai un edittext avec numéro de type d'entrée, utilisé pour montrer la quantité d'articles achetés dans le panier de l'utilisateur. Je veux m'assurer que quand la valeur d'edittext est éditée, si la valeur est "", "0", ou "00", etc., tant que c'est < 1, alors la valeur sera mise dans "1".Android EditText avec numéro de type d'entrée valeur sur changement de texte toujours> 0

J'ai fatigué le code ci-dessous de:

 txtJumlah.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

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

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       int jumlah = Integer.parseInt(txtJumlah.getText().toString()); 
       if(txtJumlah.getText().toString().equals("") || jumlah <= 1) { 
        txtJumlah.setText("1"); 
       } 
       calculate(); 
      } 
     }); 

Mais il retourne un java.lang.StackOverflowError: taille de la pile 8MB

Quelqu'un peut-il me aider? merci

Répondre

1

remplacer:

if(txtJumlah.getText().toString().equals("") || jumlah <= 1) { 
    txtJumlah.setText("1"); 
} 

par:

if(txtJumlah.getText().toString().equals("") || jumlah < 1) { 
    txtJumlah.setText("1"); 
} 

solution ci-dessus doit résoudre le problème.

Une suggestion pour optimiser votre code:

int jumlah = Integer.parseInt(txtJumlah.getText().toString()); 

Cela peut provoquer ParseException (si txtJumlah.getText().toString() est une chaîne plutôt que des chiffres)

+0

txtJumlah.getText() ne reviendra nulle. Il retournera toujours une chaîne vide. La seule chose qui pourrait provoquer une exception NullPointerException est si le TextView était nul. Même si vous essayez setText (null), il le convertira en String vide. – Lunkie

+0

est d'accord, a mis à jour sa réponse –

2

Lorsque vous définissez le texte sur "1", il appelle encore et encore afterTextChanged provoquant une boucle infinie. Essayez de placer le jumlah < 1 dans votre instruction if à la place.