简体   繁体   中英

issue in alert dialog remain open in Positive button validation click in android

i want to open my alert dialog in positive button click which i have 3 validaiotn condition i check on it below is my code

    LayoutInflater li = LayoutInflater.from(getActivity());
                    View promptsView = li.inflate(R.layout.dialog_reset, null);
                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light_Dialog));
                    alertDialogBuilder.setView(promptsView);

                    final EditText mEditText = (EditText) promptsView
                            .findViewById(R.id.editText1);
                    final EditText mEditText2 = (EditText) promptsView
                            .findViewById(R.id.editText2);
                    final EditText mEditText3 = (EditText) promptsView
                            .findViewById(R.id.editText3);

                    alertDialogBuilder
                            .setCancelable(false)

                            .setPositiveButton("SUBMIT",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,
                                                int id) {
                                            // get user input and set it to result
                                            // edit text
                                            mStringOldPass = mEditText.getText().toString().trim();
                                            mStringNewPass = mEditText2.getText().toString().trim();
                                            if (mEditText.getText().toString().trim()
                                                    .equalsIgnoreCase("")) {
                                                mAllMethods.ShowDialog(getActivity(),
                                                        "Validation Error", "Enter Old Password",
                                                        "Ok");
                                            } else if (mEditText2.getText().toString().trim()
                                                    .equalsIgnoreCase("")) {
                                                mAllMethods.ShowDialog(getActivity(),
                                                        "Validation Error", "Enter New Password",
                                                        "Ok");

                                            } else if (mEditText3.getText().toString().trim()
                                                    .equalsIgnoreCase("")) {
                                                mAllMethods.ShowDialog(getActivity(),
                                                        "Validation Error",
                                                        "Enter Confirm Password", "Ok");

                                            }

                                            else if (!mEditText3
                                                    .getText()
                                                    .toString()
                                                    .trim()
                                                    .equalsIgnoreCase(
                                                            mEditText2.getText().toString().trim())) {
                                                mAllMethods.ShowDialog(getActivity(),
                                                        "Validation Error",
                                                        "Enter new password not matching", "Ok");

                                            } else {
                                                if (mAllMethods.check_Internet() == true) {
                                                    mDialogPin.dismiss();
                                                    InputMethodManager imm = (InputMethodManager) getActivity()
                                                            .getSystemService(
                                                                    Context.INPUT_METHOD_SERVICE);
                                                    imm.hideSoftInputFromWindow(
                                                            mEditText3.getWindowToken(), 0);


                                                        new changePass().execute();


                                                } else {
                                                    mAllMethods.ShowDialog(getActivity(),
                                                            "Validation Error",
                                                            "Network not available", "Ok");

                                                }

                                            }
                                        }
                                    })
                            .setNegativeButton("Cancel",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,
                                                int id) {
                                            dialog.cancel();
                                        }
                                    });

                    // create alert dialog
                    AlertDialog alertDialog = alertDialogBuilder.create();

                    // show it
                    alertDialog.show();

In above code i check 3 validation inside positive button so my validation work fine but my alert dialog getting close at a same time , i want to remain open when my validation condition fire on it so any idea how can i solve it ?

Create a listener class first

class CustomListener implements View.OnClickListener {
    private final Dialog dialog;
    public CustomListener(Dialog dialog) {
        this.dialog = dialog;
    }
    @Override
    public void onClick(View v) {

        // Do whatever you want here

        // If tou want to close the dialog, uncomment the line below
        //dialog.dismiss();
    }
}

And when showing the dialog write

AlertDialog dialog = dialogBuilder.create();
dialog.show();
Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
button.setOnClickListener(new CustomListener(dialog));

Also you can use like this..

 Button b = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i(TAG, "ok button is clicked");

            }
        });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM