2010-06-10 6 views
23

J'aimerais utiliser AlertDialog comme une boîte de dialogue de connexion ou de code PIN ou de mot de passe. Voici mon code -Texte de saisie AlertDialog

AlertDialog.Builder alert = new AlertDialog.Builder(this);     
alert.setTitle("Login"); 
alert.setMessage("Enter Pin :");     

// Set an EditText view to get user input 
final EditText input = new EditText(this); 
alert.setView(input); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     String value = input.getText().toString(); 
     Log.d(TAG, "Pin Value : " + value); 
     return;     
     } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      return; 
     } 
    }); 
      alert.show(); 

Comment coder que tout le texte d'entrée apparaît comme « *** » - astérisque

Je ne peux pas obtenir ma valeur de code PIN bien qu'il montre en astérisque. mon code est ci-dessous

private void accessPinCode_2() 
{ 
    LayoutInflater factory = LayoutInflater.from(this); 
    final View textEntryView = factory.inflate(R.layout.dialog_login, null); 
    AlertDialog.Builder alert = new AlertDialog.Builder(this);     
    alert.setTitle("Login"); 
alert.setMessage("Enter Pin :");     
alert.setView(textEntryView); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     //String value = input.getText().toString(); 
     EditText mUserText; 
     mUserText = (EditText) textEntryView.findViewById(R.id.txt_password); 
     String strPinCode = mUserText.getText().toString(); 
     Log.d(TAG, "Pin Value : " + strPinCode); 
     return;     
     } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      return; 
     } 
    }); 
      alert.show(); }} 

dialog_login.xml

<?xml version="1.0" encoding="utf-8"?> 
<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/txt_password" 
     android:password="true" 
     android:layout_height="wrap_content" 
     android:layout_width="250px" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/password_text" 
     android:singleLine="true" /> 

je suis entré dans la valeur, mais je reçois nulle!

comment peut-on résoudre?

Le débogage est arrêté à cette instruction. Lorsque j'ai pointé au-dessus de mUserText, la valeur nulle est affichée dans le popup.

Chaîne strPinCode = mUserText.getText(). ToString();

J'utilise Android 1.6. Cela dépend-il de la version? :?:

Répondre

4

Vous EditText doit avoir android:password="true".

Vérifiez this lien.

+0

Merci, Macarse. Je connais cet android: mot de passe. Mais je veux juste utiliser AlertDialog comme formulaire de connexion. Est-ce bon à utiliser comme ça? Mon application a la disposition de l'onglet principal, puis l'activité connexe apparaîtra. Cela ressemble à des contacts intégrés. Je voudrais afficher cette mise en page de connexion chaque fois que l'utilisateur commence à utiliser mon application. Je connais juste l'événement onResume() mais si j'utilise cet événement, la mise en page de connexion apparaîtra parfois deux fois ou plus. Donc, comment coder pour apparaître chaque fois que l'utilisateur commence à utiliser l'application. – soclose

+0

Ça a marché. J'utilise LayoutInflater, basé sur ce lien - http://www.coderanch.com/t/434894/Android/Mobile/values ​​ – soclose

+0

Je ne peux pas obtenir ma valeur de code PIN, même si cela se voit en astérisque. J'ai posté mon code mis à jour dans mon post. Veuillez vérifier mon point manquant ou faux. – soclose

6

Ce problème peut être résolu sans utiliser obsolète android:password. Voir ma réponse here.

-1

Remplacer:

EditText rate = (EditText)findViewById((R.id.rate)); 

Avec:

EditText rate = (EditText)wind.findViewById((R.id.rate)); 
+2

quoi, ....../??????? / –