Android 경고 대화 상자에 세 번째 버튼을 추가하려면 어떻게해야합니까?


답변:


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

226

대화 상자를 만들 때 다음과 같이 빌더에 추가합니다.

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 경고 대화 상자에 네 번째 버튼을 추가 할 수 있습니까?
Geek

4
이 경우-아니요. 사용자 정의보기를 만들어야합니다.
AndrewS 2013-09-24

맞춤 알림 대화 상자를 만드는 것이 더 정확합니다. 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 2015 년

3
@ d60402-좋은 지적이지만, 2 개 이상의 버튼이있는 대화 상자를 만드는 방법을 찾는 개발자가이 대답을 발견하면 ...이 옵션을 사용하면 버튼 수가 더 유연하기 때문에 매우 유용합니다. 다르게 말하면, 포지티브 버튼과 네거티브 버튼이 당신이하고있는 일에 충분하지 않다면, 3 개의 버튼이 꽤 빨리 4 개가 될 수 있습니다. 따라서 투표.
Oded Breiner 2015 년

@ d60402 질문의 제목은 중립 버튼을 표시하는 방법이 아니라 세 번째 버튼을 추가하는 방법입니다.
Boris Treukhov 2015-08-26

@Boris Treukhov-대화 상자에 양수 버튼과 음수 버튼이 있으면 대화 상자에 두 개의 버튼이 있음을 의미합니다. 중립 버튼을 추가하면 대화 상자에 세 번째 버튼이 제공됩니다. 이것은 본질적으로이 질문에 대한 상위 두 개의 답변이하는 일입니다.
d60402 2015-08-26

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 개 답변의 차이점은 무엇입니까?
FindOutIslamNow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.