2012-10-02 9 views
11

Tôi đang cố gắng tạo lời nhắc mật khẩu, khi người dùng nhập sai mật khẩu, nó sẽ hiển thị hộp thoại yêu cầu "hủy" hoặc "thử lại" và khi người dùng nhấp vào "thử lại", nó sẽ hiển thị nhắc lại mật khẩu lần nữa.nhắc mật khẩu trên android

Dưới đây là những hình ảnh để minh họa cho những gì tôi có nghĩa là

enter image description here

enter image description here

Đây là cách tôi đã làm nó

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

      } 
     }); 

Có ai biết làm thế nào để làm điều đó?

Trả lời

10

Tôi đã giải quyết được vấn đề của riêng mình. Tôi đã thực hiện một phương pháp cho hộp thoại cảnh báo của mình và sau đó khi tôi nhấp vào "thử lại", tôi sẽ gọi lại phương thức. :)

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

Giải pháp này là mất tích 'R.layout.searchprompt', 'R.id.user_input' và' Search_Tips()'. –

3

Đây là mẫu đẹp - http://www.mkyong.com/android/android-prompt-user-input-dialog-example từ mkyong.

file layout cho lời nhắc mật khẩu

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