简体   繁体   中英

Can I set a Button already in my xml to be the positive or negative Button in a Dialog?

I'd rather not use Alert Dialog, but I will if I can set the positive Button to be the button I already have. If I can't do that, is there a way to set positive and negative Buttons in a custom dialog?

You can use the following custom alert dialog.

public class CustomAlertDialog {

    public void showDialog(Context activity, String msg, String buttonText, final CustomDialogListener customDialogListener){ //one button with callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert);

        TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog);
        text.setText(msg);

        Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog);
        dialogButton.setText(buttonText);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onPositiveButtonClick();
            }
        });

        dialog.show();

    }

    public void showDialog(Context activity, String msg, String positiveButtonText, String negativeButtonText, final CustomDialogListener customDialogListener){//two button with callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert_two_button);

        TextView text = (TextView) dialog.findViewById(R.id.text_alert_two_dialog);
        text.setText(msg);

        Button positiveDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_YES);
        Button negativeDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_NO);
        positiveDialogButton.setText(positiveButtonText);
        negativeDialogButton.setText(negativeButtonText);

        positiveDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onPositiveButtonClick();
            }
        });

        negativeDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onNegativeButtonClick();
            }
        });

        dialog.show();

    }


    public void showDialog(Context activity, String msg, String buttonText){ //simple alert without callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert);

        TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog);
        text.setText(msg);

        Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog);
        dialogButton.setText(buttonText);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }

}

The custom_alert.xml contains one button and one textView to display the message.

The custom_alert_two_button.xml contains two buttons and one textView to display the message.

Last one contains only one textview to display message.

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