2014-05-02 4 views
-1

J'étudie la programmation sous Android et je suis en train de résoudre un problème. J'ai ce bouton bascule et quand je saisis un texte et le bouton est allumé, le texte est étoilé (mot de passe, appelez-le comme vous voulez) et quand le bouton est éteint, le texte est un texte. Cependant, je suis frapper un problème et je ne vois pas le problème. Le bloc de code ressemble à:Modifier la valeur EditText du texte au mot de passe et vice versa sur ToggleButton cochée

toggleCommand.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(toggleCommand.isChecked()){ 
        input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       } else{ 
        input.setInputType(InputType.TYPE_CLASS_TEXT); 
       } 
      } 
     }); 

Je ne vois pas le problème. Pouvez-vous me dire ce que j'ai fait de mal et expliquer? Lorsque j'allume l'application .. Je tape quelque chose et il est mot de passe. J'appuie sur le bouton pour le décocher et le texte avec mot de passe devient un texte. J'appuie à nouveau sur le bouton et au lieu d'être à nouveau mot de passe, le texte reste normal.

+2

mai cette aide? http://stackoverflow.com/questions/2586301/set-inputtype-for-an-edittext –

Répondre

1

Voici le code de travail:

toggleCommand.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View arg0) 
     { 
      if (toggleCommand.isChecked()) 
      { 
       input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
      } 
      else 
      { 
       input.setInputType(InputType.TYPE_CLASS_TEXT); 
      } 
     } 
    }); 

Plus d'infos: http://thenewboston.org/watch.php?cat=6&number=27

Programmatically change input type of the EditText from PASSWORD to NORMAL & vice versa

edit: explication plus loin setInputType ici: http://developer.android.com/reference/android/text/InputType.html

+0

Cela a fonctionné, mais je ne comprends pas la logique derrière le code. Peux-tu expliquer? – MrSilent

1

Essayez ceci:

toggleCommand = (ToggleButton)findViewById(R.id.the_id_of_your_togglebutton) ; 
toggleCommand.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) 
    { 
     if(isChecked) 
     { 
      input.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
     } 
     else 
     { 
      input.setTransformationMethod(null); 
     } 
    } 
}); 

Vous pouvez en lire davantage sur le documentation.


MISE À JOUR

Pour faire ce genre de manipulation, vous pouvez utiliser TransformationMethod.

Ainsi, pour définir le texte à un mot de passe caché, vous devez utiliser PasswordTransformationMethod et pour la transformer en texte à nouveau, vous définissez juste la TransformationMethod à null, de cette façon, aucune transformation sera appliquée au texte.

J'espère que cela vous aide.

Questions connexes