Android Uyarı İletişim Kutusuna nasıl üçüncü bir düğme ekleyebilirim?


118

API, Uyarı İletişim Kutusunun bir, iki veya üç düğmeye sahip olabileceğini, ancak SDK'nın yalnızca pozitif ve negatif düğmeye izin verdiğini söylüyor. O halde üçüncü bir düğmeyi nasıl ekleyebilirim?



@Suragch tam bir genel bakış için faydalı cevap
FindOutIslamNow

Yanıtlar:


137

Bu kod parçacığı, kullanabileceğiniz üç farklı düğmeyi açıklamaya yardımcı olacaktır:

    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
Bu kullanımdan kaldırıldı ... cevabıma bir bakın.
ninjasense

1
@ninjasense, cevabınızı yazarken fark ettim ve düzenleme yapıyordum. Teşekkürler!
sahhhm

226

İletişim kutusunu oluştururken oluşturucuya şunun gibi bir şey ekleyin:

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 Uyarı iletişim kutusuna 4. düğmeyi eklemek mümkün mü?
Geek

4
bu durumda - hayır. Özel bir görünüm yapmalısınız.
AndrewS

Özel uyarı iletişim kutusu oluşturmak daha doğru. stackoverflow.com/questions/13341560/…
EJ Chathuranga

50

Xml olmadan istediğiniz sayıda düğme ekleyin :

    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
Bu çözüm düğmeler eklemekten ibaret değildir, örneğin "Tamam", "İptal", vb. Daha ziyade seçenekler listesinde görüntülenecek öğeleri ayarlamaktır, ör. "Seçenek 1", "Seçenek 2" vb. sorusu "SDK'nın yalnızca pozitif ve negatif düğmeye izin verdiğinden" bahsediyor, bu sınırlamanın nasıl üstesinden gelineceği yanıtını vermiyor.
d60402

3
@ d60402 - iyi bir noktaya sahipsiniz, ancak 2'den fazla düğmeyle bir iletişim kutusu oluşturmanın bir yolunu arayan bir geliştirici bu yanıtla karşılaşırsa ... Bu seçeneğe sahip olmak çok kullanışlıdır çünkü düğme sayısı konusunda daha esnektir. Başka bir deyişle, yaptığınız şey için pozitif ve negatif düğmeler yeterli değilse, 3 düğme oldukça hızlı bir şekilde 4 olabilir. Dolayısıyla oylar.
Oded Breiner

@ d60402 Sorunun başlığı, nötr düğmenin nasıl gösterileceği değil, üçüncü bir düğmenin nasıl ekleneceğidir.
Boris Treukhov

@Boris Treukhov - Diyaloğun bir pozitif ve bir negatif düğmesi varsa, bu, diyaloğun iki düğmesi olduğu anlamına gelir. Nötr düğmeyi eklemek, iletişim kutusuna üçüncü düğmeyi verecektir. Esasen bu sorunun en iyi iki cevabının yaptığı şey budur.
d60402

Stackoverflow.com/a/19658646/2914140 adresinde gösterildiği gibi , bu çözüm, ayarlanmış bir iletişim mesajı olmadığında düğmeleri gösterecektir.
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
Bunun en iyi 2 cevapla farkı nedir?
FindOutIslamNow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.