मैं एंड्रॉइड अलर्ट डायलॉग में तीसरा बटन कैसे जोड़ सकता हूं?


118

एपीआई का कहना है कि अलर्ट डायलॉग में एक, दो या तीन बटन हो सकते हैं, लेकिन एसडीके केवल एक सकारात्मक और नकारात्मक बटन की अनुमति देता है। फिर मैं तीसरा बटन कैसे जोड़ सकता हूं?



पूर्ण अवलोकन के लिए @Suragch उपयोगी उत्तर
FindOutIslamNow

जवाबों:


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
इस पदावनत ... मेरे जवाब पर एक नज़र डालें।
नन्जसेन

1
@ninjasense, मुझे एहसास हुआ और आप अपना उत्तर लिखते समय संपादन कर रहे थे। धन्यवाद!

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 क्या अलर्ट डायलॉग में 4 वा बटन जोड़ना संभव है?
गीक

4
इस मामले में - नहीं। आपको एक कस्टम दृश्य बनाना चाहिए।
एंड्रयूज

कस्टम अलर्ट डायलॉग बनाना अधिक उपयुक्त है। stackoverflow.com/questions/13341560/…
ईजे चतुरंगा

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", आदि। चूंकि। प्रश्न में उल्लेख है कि "एसडीके केवल एक सकारात्मक और नकारात्मक बटन की अनुमति देता है", यह उस सीमा को पार करने के लिए कैसे जवाब नहीं देता है।
d60402

3
@ d60402 - आपके पास एक अच्छा बिंदु है, लेकिन अगर कोई डेवलपर 2 से अधिक बटन के साथ संवाद बनाने का तरीका खोज रहा है, तो इस उत्तर के पार आता है ... इस विकल्प का होना बहुत उपयोगी है क्योंकि यह बटन की संख्या के साथ अधिक लचीला है। इसे अलग तरीके से रखने के लिए, यदि आप जो कर रहे हैं उसके लिए सकारात्मक और नकारात्मक बटन पर्याप्त नहीं हैं, तो 3 बटन 4 बहुत जल्दी बन सकते हैं। इसलिए वोट।
ओडेड ब्रेइन

@ d60402 इस सवाल का शीर्षक है कि तीसरा बटन कैसे जोड़ा जाए, न कि न्यूट्रल बटन कैसे दिखाया जाए।
बोरिस त्रेखोव

@ बोरिस ट्रेखोव - यदि संवाद में एक सकारात्मक बटन और एक नकारात्मक बटन है, तो इसका मतलब है कि संवाद में दो बटन हैं। न्यूट्रल बटन जोड़ने से डायलॉग को तीसरा बटन मिलेगा। यह अनिवार्य रूप से इस प्रश्न के शीर्ष दो उत्तर क्या कर रहे हैं।
d60402

जैसा कि stackoverflow.com/a/19658646/2914140 में दिखाया गया है , यह समाधान तब दिखाई देगा जब कोई संवाद संदेश सेट नहीं होगा।
कूलमाइंड

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.