Bagaimana cara menambahkan tombol ketiga ke Dialog Peringatan Android?

Jawaban:

136

Cuplikan kode ini akan membantu menjelaskan tiga tombol berbeda yang dapat Anda gunakan:

    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) {

        //...

    }});
sahhhm
sumber
29
Ini usang ... lihat jawaban saya.
ninjasense
1
@ninjasense, saya menyadari dan sedang mengedit saat Anda menulis jawaban Anda. Terima kasih!
sahhm
225

Saat Anda membuat dialog, tambahkan sesuatu seperti ini ke pembuat:

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();
ninjasense
sumber
2
@ninjasense Apakah mungkin menambahkan tombol ke-4 untuk dialog peringatan?
Geek
4
dalam hal ini - tidak. Anda harus membuat tampilan kustom.
AndrewS
Membuat dialog lansiran ubahsuaian lebih akurat. stackoverflow.com/questions/13341560/…
EJ Chathuranga
50

Menambahkan setiap jumlah tombol tanpa 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();
Oded Breiner
sumber
3
Solusi ini tidak menambahkan tombol, misalnya "OK", "Batal", dll., Melainkan mengatur item yang akan ditampilkan dalam daftar pilihan, misalnya, "Opsi 1", "Opsi 2", dll .. Sejak pertanyaan menyebutkan bahwa "SDK hanya memungkinkan untuk tombol positif dan negatif", ini tidak menjawab bagaimana mengatasi batasan itu.
d60402
3
@ d60402 - Anda memiliki pendapat yang baik, tetapi jika pengembang yang mencari cara untuk membuat dialog dengan lebih dari 2 tombol mendapatkan jawaban ini ... Memiliki opsi ini sangat berguna karena lebih fleksibel dengan jumlah tombol. Dengan kata lain, jika tombol positif dan negatif tidak cukup untuk apa yang Anda lakukan, 3 tombol mungkin menjadi 4 dengan cepat. Karenanya suara.
Oded Breiner
@ d60402 Judul pertanyaannya adalah bagaimana cara menambahkan tombol ketiga, bukan cara menampilkan tombol netral.
Boris Treukhov
@ Boris Treukhov - Jika dialog memiliki tombol positif dan tombol negatif, itu berarti dialog memiliki dua tombol. Menambahkan tombol netral akan memberi dialog tombol ketiga. Ini pada dasarnya adalah apa yang dilakukan oleh dua jawaban teratas untuk pertanyaan ini.
d60402
Seperti yang ditunjukkan di stackoverflow.com/a/19658646/2914140 , solusi ini akan menampilkan tombol jika tidak ada kumpulan pesan dialog.
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();
Nirav Bhavsar
sumber
1
Apa bedanya dengan 2 jawaban teratas?
FindOutIslamNow