如何创建带有按钮参数的警报对话框的方法?

时间:2018-07-25 01:45:05

标签: android

我想要这样的东西。我想重用我的警报对话框方法,但是我不知道如何为肯定和否定按钮实现参数:

private void alert(String title, String message, actionPositive, actionNegative){
    AlertDialog.Builder builder = new AlertDialog.Builder(QuestionProfile.this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton("Yes",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //action
                }
            });
    builder.setNegativeButton("No",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();
}

我想这样称呼是可能的吗?

alert("Title","Message",action for positive button, action for negative button); 

2 个答案:

答案 0 :(得分:2)

它可以很简单,如下所示:

private void alert(String title, String message,DialogInterface.OnClickListener actionPositive, DialogInterface.OnClickListener actionNegative){
    AlertDialog.Builder builder = new AlertDialog.Builder(QuestionProfile.this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton("Yes",actionPositive);
    builder.setNegativeButton("No",actionNegative);
    AlertDialog alert = builder.create();
    alert.show();
}

匿名类的示例用法是:

alert("Title","Message",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //action for positive
                }
            }, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //action for negative
                }
            }); 

答案 1 :(得分:1)

您可以使用整数大小写集或boolean来完成此操作。如果booleantrue,则它将显示delete;如果false,则将显示OK,如下所示-

private void alert(String title, String message, boolean actionPositive, boolean actionNegative){
String positive = ""; 
 if(actionPositive)
       positive = "DELETE"
 else 
       positive = "OK"

    AlertDialog.Builder builder = new AlertDialog.Builder(QuestionProfile.this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton(positive,   //give name to your action
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                     if(actionPositive)
                         //action delete 
                     else 
                         //action ok
                }
            });
    builder.setNegativeButton("No",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();
}

以上述方式,您也可以将其用于否定按钮。

您的delete调用方法如下

alert(""title, "message", true, false)

好吧

alert(""title, "message", false, false)