2012-10-02 21 views
11

Próbuję wprowadzić hasło, gdy użytkownik wprowadzi złe hasło, wyświetli okno dialogowe z prośbą o "anulowanie" lub "ponowienie", a gdy użytkownik kliknie "ponów", wyświetli ponownie zapytaj o hasło.hasło do hasła na Androidzie

Poniżej znajdują się obrazy, aby zilustrować, co mam na myśli

enter image description here

enter image description here

To jak mam to zrobić

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

      } 
     }); 

Czy ktoś wie jak to zrobić?

Odpowiedz

10

Rozwiązałem mój własny problem. Zrobiłem metodę dla mojego okna dialogowego z ostrzeżeniem, a kiedy kliknę "ponów", ponownie wezwę metodę. :)

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

To rozwiązanie brakuje ',' R.id.user_input' R.layout.searchprompt' i 'Search_Tips()'. –

3

Oto niezła próbka - http://www.mkyong.com/android/android-prompt-user-input-dialog-example z mkyong.

plik układ dla hasła poprosi

<?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>