Skip to content Skip to sidebar Skip to footer

Validation For Alert Dialog

Hi Everyone, Im working in a game and when the player finished the level , Im asking the Player to enter his name on EditText in Alert Dialog : AlertDialog.Builder builder = new Bu

Solution 1:

See this:

AlertDialog.Builderbuilder=newBuilder(this);
        LayoutInflaterinflater= getLayoutInflater();

        // Inflate and set the layout for the dialog// Pass null as the parent view because its going in the dialog layout

        builder.setView(inflater.inflate(R.layout.dialog_name, null))
        // Add action buttons
               .setPositiveButton(R.string.alertName, newDialogInterface.OnClickListener() {
                   @OverridepublicvoidonClick(DialogInterface dialog, int id) {

                       playerText = (EditText) ((AlertDialog)dialog).findViewById(R.id.username);
                       if(playerText.getText() != null && playerText.getText().length() != 0)
                           Helper.currentPlayer.setName(playerText.getText().toString());
                       //calculate the score// save in data basePlayerDataSourceplayerDS=newPlayerDataSource(getApplicationContext());
                       playerDS.open();

                      /////Here check for name in databaseif (name does not exist)
                      {

                       Helper.currentPlayer = playerDS.createPlayer(Helper.currentPlayer.getName(), Helper.currentPlayer.getScore(),
                               Helper.currentPlayer.levels, Helper.currentPlayer.times, LanguageHelper.div);
                       playerDS.close();
                       saveStmc();
                       mainScene.setChildScene(choicesMenu, false, true, true);
                       builder.dismiss()
                       }
                       else
                       {
                             Toast.makeText(getApplicationContext(), "Enter other name..",
                Toast.LENGTH_SHORT).show();
                       }
                   }
               })
               .setTitle("Please Enter Your name")
               .setNegativeButton(R.string.cancel, newDialogInterface.OnClickListener() {
                   publicvoidonClick(DialogInterface dialog, int id) {

                   }
               });
        builder.setCanceledOnTouchOutside(false);            
        alert = builder.create();
        builder.show()

Solution 2:

I have found the solution, it is based on overriding the OnClick() for positive button of the AlertDialog and here is the solution:

        AlertDialog.Builderbuilder=newBuilder(this);
        LayoutInflaterinflater= getLayoutInflater();

        // Inflate and set the layout for the dialog// Pass null as the parent view because its going in the dialog layout

        builder.setView(inflater.inflate(R.layout.dialog_name, null))

               .setPositiveButton(R.string.alertName, newDialogInterface.OnClickListener() {
                   @OverridepublicvoidonClick(DialogInterface dialog, int id) {


                   }
               })
               .setTitle("Please Enter Your name");
        builder = builder.setCancelable(false);
        alert = builder.create();

        alert.setOnShowListener(newOnShowListener() {

                @OverridepublicvoidonShow(DialogInterface dialog) {
                    alert = (AlertDialog)dialog;
                     Buttonb= alert.getButton(AlertDialog.BUTTON_POSITIVE);
                     b.setOnClickListener(newView.OnClickListener() {

                         @OverridepublicvoidonClick(View view) {
                               playerText = (EditText) ((AlertDialog)alert).findViewById(R.id.username);
                               if(playerText.getText() == null || playerText.getText().length() == 0)
                               {

                                   showToastMsg("Please enter valid name");
                               }
                               else
                               {

                                   if(nameIsExist())
                                   {
                                       showToastMsg("Name already exist!!");
                                   }
                                   else
                                   {
                                       //Do stuff because every this is OK
                                       alert.dismiss();
                                   }

                               }

                         }
                     });
                }
            });

Solution 3:

Set the dilaog as cancelable trueand overide the onBackPressed() Method if need and 

    AlertDialog.Builder builder = new Builder(this);
    builder.setCancelable(true);

// onBackPressed set it to true when you meet you requisite in Dialog box

@Override
public void onBackPressed(){
    if(IsNameInserted)
    super.onBackPressed();
}

Post a Comment for "Validation For Alert Dialog"