如何在Android Alert对话框中添加第三个按钮?


Answers:


136

此代码段应有助于说明您可以使用的三个不同的按钮:

    alertDialog = new AlertDialog.Builder(this).create();

    alertDialog.setTitle("Dialog Button");

    alertDialog.setMessage("This is a three-button dialog!");

    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Button 1 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    } }); 

    alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Button 2 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    }}); 

    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Button 3 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    }});

29
不推荐使用...看看我的答案。
ninjasense 2011年

1
@ninjasense,我意识到并且在您编写答案时正在编辑。谢谢!
sahhhm 2011年

225

创建对话框时,将以下内容添加到构建器中:

builder = new AlertDialog.Builder(context);
builder.setTitle("Test");
builder.setIcon(R.drawable.icon);
builder.setMessage("test");
builder.setPositiveButton("Call Now",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });

builder.setNeutralButton("Setup",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                context.startActivity(new Intent(context, Setup.class));
                //dialog.cancel();
            }
        });

builder.setNegativeButton("Exit",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });
builder.create().show();

2
@ninjasense是否可以在警报对话框中添加第四个按钮?
极客

4
在这种情况下-不。您应该进行自定义视图。
AndrewS 2013年

创建自定义警报对话框更容易。 stackoverflow.com/questions/13341560/...
EJ Chathuranga

50

添加任意数量的不带xml的按钮:

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setItems(new CharSequence[]
            {"button 1", "button 2", "button 3", "button 4"},
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // The 'which' argument contains the index position
                    // of the selected item
                    switch (which) {
                        case 0:
                            Toast.makeText(context, "clicked 1", 0).show();
                            break;
                        case 1:
                            Toast.makeText(context, "clicked 2", 0).show();
                            break;
                        case 2:
                            Toast.makeText(context, "clicked 3", 0).show();
                            break;
                        case 3:
                            Toast.makeText(context, "clicked 4", 0).show();
                            break;
                    }
                }
            });
    builder.create().show();

3
该解决方案不是添加按钮,例如“确定”,“取消”等,而是设置要在选项列表中显示的项目,例如“选项1”,“选项2”等。问题中提到“ SDK只允许使用正面和负面的按钮”,但这并未回答如何克服该限制。
d60402

3
@ d60402-您有一个好主意,但是如果开发人员正在寻找一种创建带有两个以上按钮的对话框的方法,则会遇到此答案...具有此选项非常有用,因为它在按钮数量上更加灵活。换句话说,如果正负按钮不足以满足您的需求,则3个按钮可能很快就会变成4个。因此投票。
Oded Breiner 2015年

@ d60402问题的标题是如何添加第三个按钮,而不是如何显示中性按钮。
鲍里斯·特鲁霍夫

@Boris Treukhov-如果对话框有一个肯定的按钮和一个否定的按钮,则意味着该对话框有两个按钮。添加中性按钮将为对话框提供第三个按钮。本质上,这就是该问题的前两个答案。
d60402

stackoverflow.com/a/19658646/2914140所示,当未设置对话框消息时,此解决方案将显示按钮。
CoolMind

5
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    this);

            // set title
            alertDialogBuilder.setTitle("To Do List");

            // set dialog message
            alertDialogBuilder
                    .setMessage("What do you want?")
                    .setCancelable(false)
                    .setPositiveButton("Delete All", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, close
                            // current activity




                            dialog.cancel();


                        }
                    }).setNeutralButton("Delete", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // if this button is clicked, close
                    // current activity




                    dialog.cancel();

                }
            })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, just close
                            // the dialog box and do nothing

                            dialog.cancel();
                        }
                    });

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

            // show it
            alertDialog.show();

1
这与前2个答案有什么区别?
FindOutIslamNow18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.