Aadesh Mishra
Aadesh Mishra

Reputation: 21

AlertDialog not working properly

I am creating an AlertDialog which will ask the user to whether to delete the record or not ? so for that i have declare a global flag variable (above the onCreate() method)

private int yes;

if user press Yes then value of yes will be 1 & if press No then value of yes will be 0

The Code of my AlertDialog is below

public int dialog()
        {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(DataListActivity.this);
            alertDialog.setTitle("Alert");
            alertDialog.setMessage("Are you sure to delete ?");
            alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                yes = 1;
                }
            });
            alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    yes=0;
                }
            });
            alertDialog.show();
            return yes;
        }

on the basis of this yes i want to delete the record but either i press yes or no, the value of this flag int yes remains 0, See the LOGCAT

this one for press no

12-25 00:52:22.144 2133-2133/? E/Logggggggg::  0

this one for press Yes

12-25 00:52:33.408 2133-2133/? E/Logggggggg::  0

now i am checking the flag yes as,

     int dd = dialog();
     Log.e("Logggggggg: "," "+yes);
     if (dd == 1)
     {
        Boolean r = mydb.deleteData(selections);
     }
     else
     {
      /////// do Nothing;
     }

Can anyone tell me what's going wrong here..??

Upvotes: 0

Views: 66

Answers (3)

Omkar
Omkar

Reputation: 3100

you may just need to use onClick() signature value i.e. int which and assign it yes value like below code

  public int dialog()
    {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(LoginActivity.this);
        alertDialog.setTitle("Alert");
        alertDialog.setMessage("Are you sure to delete ?");
        alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                which = 1;
                yes = which;
                Toast.makeText(LoginActivity.this,"value : "+yes,Toast.LENGTH_SHORT).show();
            }
        });
        alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                which = 0;
                yes = which;
                Toast.makeText(LoginActivity.this,"value : "+yes,Toast.LENGTH_SHORT).show();
            }
        });
        alertDialog.show();

        Toast.makeText(LoginActivity.this,"value : "+yes,Toast.LENGTH_SHORT).show();
        return yes;

    }

Upvotes: 0

mehul chauhan
mehul chauhan

Reputation: 1802

try this

private void dialog() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Are you sure to delete ?");
    alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            yes = 1;
            Toast.makeText(getActivity(), String.valueOf(yes), Toast.LENGTH_SHORT).show();
        }
    });
    alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            yes =0;
            Toast.makeText(getActivity(), String.valueOf(yes), Toast.LENGTH_SHORT).show();

        }
    });
    alertDialog.show();
}

checking flag

if(yes==1){

    Boolean r = mydb.deleteData(selections);
 }else
 {
  /////// do Nothing;
 }

Upvotes: 1

Tim Biegeleisen
Tim Biegeleisen

Reputation: 520968

You cannot capture the value of yes as the return value of your method, because it has not been set yet at the time the return statement happens. Instead, just do the database cleanup directly in the onClick listeners for the yes and no buttons, e.g.

alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // delete the record here
        Boolean r = mydb.deleteData(selections);
    }
});

The above should be considered as pseudo-code, because I am not familiar with the details of your code base. But the basic idea to respond the user selecting yes by directly handling that action in the onClick listener.

Upvotes: 2

Related Questions