2010-06-10 14 views
23

Chciałbym użyć AlertDialog jako okna logowania lub kodu PIN lub hasła. Oto mój kod -AlertDialog Input Text

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(); 

Jak zakodować, że cały tekst wejściowy będzie wyglądać „***” - gwiazdkę

nie mogę dostać mój wartość kodu PIN mimo to pokazuje się gwiazdką. mojego kodu jest poniżej

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" /> 

wszedłem wartość, ale uzyskać zerowy!

jak rozwiązać?

Debugowanie jest zatrzymywane na tym komunikacie. Kiedy wskazałem powyżej mUserText null value jest pokazywany w popup.

String strPinCode = mUserText.getText(). ToString();

Używam Androida 1.6. Czy to zależy od wersji? :?:

Odpowiedz

4

Należy EditText powinien mieć android:password="true".

Sprawdź link this.

+0

Dziękuję Macarse. Znam to android: hasło. Ale chcę tylko użyć AlertDialog jako formularza logowania. Czy dobrze jest z tego korzystać? Moja aplikacja ma układ głównej karty, a następnie pojawi się powiązana z nią aktywność. Wygląda jak wbudowane kontakty. Chciałbym wyświetlić ten układ logowania za każdym razem, gdy użytkownik zacznie korzystać z mojej aplikacji. Wiem o zdarzeniu onResume(), ale jeśli korzystam z tego zdarzenia, czasami układ logowania pojawi się dwa lub więcej razy. W jaki sposób kodować się przy każdym uruchomieniu aplikacji przez użytkownika? – soclose

+0

Zadziałało. Używam LayoutInflater, opartego na tym łączu - http://www.coderanch.com/t/434894/Android/Mobile/values ​​ – soclose

+0

Nie mogę uzyskać wartości kodu PIN, mimo że pokazuje się gwiazdka. Opublikowałem mój zaktualizowany kod w moim poście. Sprawdź mój brakujący lub błędny punkt. – soclose

6

Ten problem można rozwiązać bez użycia przestarzałej wersji android:password. Zobacz moją odpowiedź here.

-1

Wymienić:

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

Z:

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

co, ....../??????? / –

Powiązane problemy