2012-10-02 19 views
11

Estoy tratando de hacer una solicitud de contraseña, cuando el usuario ingresó una contraseña incorrecta, se mostrará un diálogo pidiendo "cancelar" o "volver a intentar" y cuando el usuario haga clic en "reintentar", se mostrará la solicitud de contraseña nuevamente.solicitud de contraseña en android

Debajo están las imágenes para ilustrar lo que quiero decir

enter image description here

enter image description here

Así es como lo he hecho

/** RETRIEVE VIEW FROM DIALOGPROMPT.XML AND SET VIEW AS AN ALERTDIALOG BUILDER **/ 
       LayoutInflater li = LayoutInflater.from(context); 
       View promptsView = li.inflate(R.layout.searchprompt, null); 
       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
       alertDialogBuilder.setView(promptsView); 

       final EditText userInput = (EditText) promptsView 
         .findViewById(R.id.user_input); 


       // set dialog message 
       alertDialogBuilder 
        .setCancelable(false) 
        .setNegativeButton("Go", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          /** DO THE METHOD HERE WHEN PROCEED IS CLICKED*/ 
          String user_text = (userInput.getText()).toString(); 

          /** CHECK FOR USER'S INPUT **/ 
          if (user_text.equals("oeg")) 
          { 
           Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)"); 
           Search_Tips(user_text); 

          } 
          else{ 
           Log.d(user_text,"string is empty"); 
           String message = "The password you have entered is incorrect." + " \n" + "Please try again"; 
           AlertDialog.Builder builder = new AlertDialog.Builder(context); 
           builder.setTitle("Error"); 
           builder.setMessage(message); 
           builder.setPositiveButton("Cancel", null); 
           builder.setNegativeButton("Retry", null); 
           builder.create().show(); 

          } 
          } 
         }) 
        .setPositiveButton("Cancel", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
         dialog.cancel(); 
         } 
         }); 

       // create alert dialog 
       AlertDialog alertDialog = alertDialogBuilder.create(); 

       // show it 
       alertDialog.show(); 

      } 
     }); 

¿Alguien sabe cómo hacerlo?

Respuesta

10

He resuelto mi problema. Hice un método para mi diálogo de alerta y luego, cuando hago clic en "volver a intentar", volveré a llamar al método. :)

public void showDialog() 
{ 

    LayoutInflater li = LayoutInflater.from(context); 
    View promptsView = li.inflate(R.layout.searchprompt, null); 
    final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
    alertDialogBuilder.setView(promptsView); 

    final EditText userInput = (EditText) promptsView 
      .findViewById(R.id.user_input); 


    // set dialog message 
    alertDialogBuilder 
     .setCancelable(false) 
     .setNegativeButton("Go", 
      new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog,int id) { 
       /** DO THE METHOD HERE WHEN PROCEED IS CLICKED*/ 
       String user_text = (userInput.getText()).toString(); 

       /** CHECK FOR USER'S INPUT **/ 
       if (user_text.equals("oeg")) 
       { 
        Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)"); 
        Search_Tips(user_text); 

       } 
       else{ 
        Log.d(user_text,"string is empty"); 
        String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!"; 
        AlertDialog.Builder builder = new AlertDialog.Builder(context); 
        builder.setTitle("Error"); 
        builder.setMessage(message); 
        builder.setPositiveButton("Cancel", null); 
        builder.setNegativeButton("Retry", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int id) { 
          showDialog(); 
         } 
        }); 
        builder.create().show(); 

       } 
       } 
      }) 
     .setPositiveButton("Cancel", 
      new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog,int id) { 
      dialog.dismiss(); 
      } 

      } 

     ); 

    // create alert dialog 
    AlertDialog alertDialog = alertDialogBuilder.create(); 

    // show it 
    alertDialog.show(); 

} 
+4

Esta solución no se encuentra 'R.layout.searchprompt',' 'R.id.user_input' y Search_Tips()'. –

3

He aquí una muestra agradable - http://www.mkyong.com/android/android-prompt-user-input-dialog-example de mkyong.

archivo de diseño para la solicitud de contraseña

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Type Your Message : " 
     android:labelFor="@+id/editTextDialogUserInput" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/editTextDialogUserInput" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPassword" > 

     <requestFocus /> 

    </EditText> 

</LinearLayout> 
Cuestiones relacionadas