2015-09-17 1 views
1

Ok donc j'ai ce code jusqu'à présent:la détection des changements de texte dans une zone de texte vide

final EditText textBox1 = (EditText) findViewById(R.id.editText); 
    textBox1.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) { 
      try { 
       avalue = (Integer.parseInt(textBox1.getText().toString())); 
       Toast.makeText(getApplicationContext(), "Works " + avalue, Toast.LENGTH_LONG).show(); 
       UpdateMain(); 
      } finally { 
       return; 
      } 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 

Cela fonctionne assez bien, mais je veux encore la course Updater lorsque vous vider la zone de texte ou de supprimer tous les caractères dans la zone de texte parce que par défaut aucun nombre n'est égal à 1.

+0

afterTextChanged() si s.length() 0 textBox1.removeOnTextChangedListener (this); textBox1.setText ("1"); textBox1.addOnTextChangedListener (this); mais besoin de plus de logique pour après son jeu à 1. Sur un mobile, donc c'est mieux que je peux faire pour l'instant – zgc7009

Répondre

0

Est-ce que cela fonctionne pour vous?

final EditText textBox1 = (EditText) findViewById(R.id.editText); 
textBox1.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) { 
     try { 
      avalue = 0; 
      if (s.length() > 0) { 
       avalue = Integer.parseInt(s.toString()); 
       Toast.makeText(getApplicationContext(), "Works " + avalue, Toast.LENGTH_LONG).show(); 
      } 
      UpdateMain(); 
     } finally { 
      return; 
     } 
    } 
}); 

Notes:

  • j'ai décidé de mettre la logique afterTextChanged(), mais vous pouvez le remettre dans onTextChanged() si cela est plus approprié.
  • En outre, cette logique définit avalue sur 0 si la case est vide. Vous pouvez changer cette logique, le cas échéant.