2012-10-02 60 views
11

我试图做一个密码提示,当用户输入一个错误的密码时,它会显示一个对话框询问“取消”或“重试”,当用户点击“重试”时,它会显示密码再次提示。安卓系统上的密码提示

下面是图片来说明我的意思

enter image description here

enter image description here

这是我如何做它

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

      } 
     }); 

有谁知道怎么办呢?

回答

10

我已经解决了我自己的问题。我为我的警报对话做了一个方法,然后当我点击“重试”时,我会再次调用该方法。 :)

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

将该溶液缺少'R.layout.searchprompt','R.id.user_input'和'Search_Tips()'。 –

3

这是一个很好的示例 - http://www.mkyong.com/android/android-prompt-user-input-dialog-example从mkyong。

密码布局文件提示

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